<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Linux 常用 | 海内存知已，天涯若比邻</title><meta name="keywords" content="Linux"><meta name="author" content="mowei"><meta name="copyright" content="mowei"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="00、参考地址01、基础操作1、开机物理机服务器：按下电源开关，就像Windows开机一样。 本地虚拟机：在VMware中点击“开启此虚拟机”。 2、重启和关机重启和关机需要系统管理员用户权限。 1）重启 1init 6 或 reboot 2）关机 1init 0 或 halt 如果没有执行关机命令，强制断电或关闭本地虚拟机的窗口，会导致Linux操作系统文件的损坏，严重的可能导致系统无法正常启动">
<meta property="og:type" content="article">
<meta property="og:title" content="Linux 常用">
<meta property="og:url" content="https://gitee.com/momomomowei/blog/linux/Linux/index.html">
<meta property="og:site_name" content="海内存知已，天涯若比邻">
<meta property="og:description" content="00、参考地址01、基础操作1、开机物理机服务器：按下电源开关，就像Windows开机一样。 本地虚拟机：在VMware中点击“开启此虚拟机”。 2、重启和关机重启和关机需要系统管理员用户权限。 1）重启 1init 6 或 reboot 2）关机 1init 0 或 halt 如果没有执行关机命令，强制断电或关闭本地虚拟机的窗口，会导致Linux操作系统文件的损坏，严重的可能导致系统无法正常启动">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://gitee.com/momomomowei/images/linux.png">
<meta property="article:published_time" content="2021-09-16T11:43:06.000Z">
<meta property="article:modified_time" content="2024-04-21T07:24:14.395Z">
<meta property="article:author" content="mowei">
<meta property="article:tag" content="Linux">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://gitee.com/momomomowei/images/linux.png"><link rel="shortcut icon" href="/media/favicon.png"><link rel="canonical" href="https://gitee.com/momomomowei/blog/linux/Linux/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: {"path":"search.xml","languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"簡"},
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '天',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  source: {
    jQuery: 'https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js',
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
    },
    fancybox: {
      js: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js',
      css: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css'
    }
  },
  isPhotoFigcaption: true,
  islazyload: true,
  isanchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: 'Linux 常用',
  isPost: true,
  isHome: false,
  isHighlightShrink: false,
  isToc: true,
  postUpdate: '2024-04-21 15:24:14'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const fontSizeVal = saveToLocal.get('global-font-size')
    if (fontSizeVal !== undefined) {
      document.documentElement.style.setProperty('--global-font-size', fontSizeVal + 'px')
    }
    
    const detectApple = () => {
      if (GLOBAL_CONFIG_SITE.isHome && /iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    document.addEventListener('pjax:complete', detectApple)})(window)</script><meta name="generator" content="Hexo 5.4.2"></head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">加载中...</div></div></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src= "" data-lazy-src="/media/avatar.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">41</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">29</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/categories/"><div class="headline">分类</div><div class="length-num">7</div></a></div></div></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 目录</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('/images/linux.png')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">海内存知已，天涯若比邻</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 目录</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">Linux 常用</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2021-09-16T11:43:06.000Z" title="发表于 2021-09-16 19:43:06">2021-09-16</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2024-04-21T07:24:14.395Z" title="更新于 2024-04-21 15:24:14">2024-04-21</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/Linux/">Linux</a></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-wordcount"><i class="far fa-file-word fa-fw post-meta-icon"></i><span class="post-meta-label">字数总计:</span><span class="word-count">12.9k</span><span class="post-meta-separator">|</span><i class="far fa-clock fa-fw post-meta-icon"></i><span class="post-meta-label">阅读时长:</span><span>45分钟</span></span><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="Linux 常用"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="busuanzi_value_page_pv"></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><h1 id="00、参考地址"><a href="#00、参考地址" class="headerlink" title="00、参考地址"></a>00、<a target="_blank" rel="noopener" href="http://www.freecplus.net/ca546f102ddb4e68a1703c5c3c21d2d8.html">参考地址</a></h1><h1 id="01、基础操作"><a href="#01、基础操作" class="headerlink" title="01、基础操作"></a>01、基础操作</h1><h2 id="1、开机"><a href="#1、开机" class="headerlink" title="1、开机"></a>1、开机</h2><p>物理机服务器：按下电源开关，就像Windows开机一样。</p>
<p>本地虚拟机：在VMware中点击“开启此虚拟机”。</p>
<h2 id="2、重启和关机"><a href="#2、重启和关机" class="headerlink" title="2、重启和关机"></a>2、重启和关机</h2><p>重启和关机需要系统管理员用户权限。</p>
<p>1）重启</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">init 6 或 reboot</span><br></pre></td></tr></table></figure>
<p>2）关机</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">init 0 或 halt</span><br></pre></td></tr></table></figure>
<p>如果没有执行关机命令，强制断电或关闭本地虚拟机的窗口，会导致Linux操作系统文件的损坏，严重的可能导致系统无法正常启动。</p>
<h2 id="3、清屏"><a href="#3、清屏" class="headerlink" title="3、清屏"></a>3、清屏</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">clear 或 ctrl + L</span><br></pre></td></tr></table></figure>
<p>清除当前屏幕上显示的内容。</p>
<h2 id="4、查看服务器的ip地址"><a href="#4、查看服务器的ip地址" class="headerlink" title="4、查看服务器的ip地址"></a>4、查看服务器的ip地址</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ip addr 或者 ifconfig</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381749794021248.png" alt="image.png"></p>
<p>上图中，框中显示的就是IP地址。</p>
<h2 id="5、时间操作"><a href="#5、时间操作" class="headerlink" title="5、时间操作"></a>5、时间操作</h2><p>普通用户可以查看时间，但设置时区和时间要系统管理员用户登录 。</p>
<p>1）查看时间。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">date</span><br></pre></td></tr></table></figure>
<p>2）设置时区为中国上海时间（注意不是北京时间）。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</span><br></pre></td></tr></table></figure>
<p>3）设置时间。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">date -s &quot;yyyy-mm-dd hh:mi:ss&quot;</span><br></pre></td></tr></table></figure>
<p>例如：date -s “2020-01-02 12:35:28”</p>
<h2 id="6、目录和文件"><a href="#6、目录和文件" class="headerlink" title="6、目录和文件"></a>6、目录和文件</h2><p>文件系统是像一棵树，树干是/（根）目录，树枝是子目录，树枝后面还有树枝（子目录中还有子目录），树枝最后是树叶，目录的最后是文件。</p>
<p><img src= "" data-lazy-src="1588381769799018485.png" alt="image.png"></p>
<p>严谨的说，文件名是由<strong>目录+文件名</strong>组成的。</p>
<p>对于目录和文件，有一些约定的表述，我们以/usr/etc/readme.txt为例。</p>
<p>1）<strong>全路径文件名</strong>包含了完整的目录名和文件名，即/usr/etc/readme.txt，还有一个称呼是“<strong>绝对路径文件名</strong>”。</p>
<p>2）readme.txt是文件名，它在/usr/etc目录中。</p>
<p>3）目录和文件的<strong>绝对路径</strong>是从根（/）算起，在任何时候都不会有岐义。</p>
<p>4）登录Linux后，一定处在目录树的某个目录中，这个目录称之为当前工作目录，简称<strong>当前目录</strong>。</p>
<p>5）目录和文件的<strong>相对路径</strong>是从当前工作目录算起，如果当前工作目录是/usr，etc/readme.txt等同于/usr/etc/readme.txt；如果当前工作目录是/usr/etc，readme.txt等同于/usr/etc/readme.txt。</p>
<p>6）用Linux的命令操作目录和文件的时候，采用绝对路径和相对路径都可以。</p>
<p>7）一个圆点.表示当前工作目录；</p>
<p>8）两个圆点..表示当前工作目录的上一级目录。</p>
<p><strong>理解绝对路径和相对路径的概念非常重要，在日常操作中，绝对路径和相对路径会同时使用，但是程序员在编写的程序中极少使用相对路径。</strong></p>
<h2 id="7、查看当前工作目录"><a href="#7、查看当前工作目录" class="headerlink" title="7、查看当前工作目录"></a>7、查看当前工作目录</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pwd</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381788814047040.png" alt="image.png"></p>
<h2 id="8、改变当前工作目录"><a href="#8、改变当前工作目录" class="headerlink" title="8、改变当前工作目录"></a>8、改变当前工作目录</h2><p>cd 目录名</p>
<p>示例：</p>
<p>1）进入/tmp目录</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cd /tmp</span><br></pre></td></tr></table></figure>
<p>2）进入上一级目录</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cd ..</span><br></pre></td></tr></table></figure>
<p>3）进入用户的主目录</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cd</span><br></pre></td></tr></table></figure>
<h2 id="9、列出目录和文件信息"><a href="#9、列出目录和文件信息" class="headerlink" title="9、列出目录和文件信息"></a>9、列出目录和文件信息</h2><p>ls [-lt] 目录或文件名</p>
<p>ls是list的缩写，通过ls 命令不仅可以查看目录和文件信息，还可以目录和文件权限、大小、主人和组等信息。</p>
<p>选项-l列出目录和文件的详细信息。</p>
<p>选项-lt列出目录和文件的详细信息，按时间降序显示。</p>
<p>示例：</p>
<p>1）列出当前工作目录下全部的目录和文件名信息。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381806720060844.png" alt="image.png"></p>
<p>2）列出当前工作目录下全部的目录和文件名详细的信息。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls -l</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381820246080796.png" alt="image.png"></p>
<p>3）列出/tmp目录下全部的目录和文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls /tmp</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381833896042309.png" alt="image.png"></p>
<p>4）正则表达式</p>
<p>正则表达式又称规则表达式、通配符，目录和文件名都支持正则表达式，正则表达式的规则比较多，在这里我只介绍最常用的两种：星号“*”和问号“?”。</p>
<p>星号“*”：匹配任意数量的字符。</p>
<p>问号“?”：匹配一个的字符。</p>
<p>5）列出/tmp目录下以匹配exp*.dmp的目录和文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls /tmp/exp*.dmp</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381852797003207.png" alt="image.png"></p>
<p>6）列出/tmp目录下匹配*.log的目录和文件，按时间降序显示。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ls /tmp/*.log</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381862968040531.png" alt="image.png"></p>
<h2 id="10、创建目录"><a href="#10、创建目录" class="headerlink" title="10、创建目录"></a>10、创建目录</h2><p>mkdir 目录名</p>
<p>示例：</p>
<p>1）在当前工作目录下创建aaa目录。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir aaa</span><br></pre></td></tr></table></figure>
<p>2）在当前工作目录的aaa目录下创建bbb目录。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir aaa/bbb</span><br></pre></td></tr></table></figure>
<p>3）创建/tmp/aaa目录。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir /tmp/aaa</span><br></pre></td></tr></table></figure>
<h2 id="11、删除目录和文件"><a href="#11、删除目录和文件" class="headerlink" title="11、删除目录和文件"></a>11、删除目录和文件</h2><p>rm [-rf] 目录或文件列表</p>
<p>选项-r可以删除目录，如果没有-r只能删除文件。</p>
<p>选项-f表示强制删除，不需要确认。</p>
<p>目录和文件列表中间用空格分隔。</p>
<p>示例：</p>
<p>1）删除当前工作目录下匹配*.log的文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rm *.log</span><br></pre></td></tr></table></figure>
<p>2）强制删除当前工作目录下匹配*.log的文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rm -f *.log</span><br></pre></td></tr></table></figure>
<p>3）删除/tmp/aaa目录和文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rm -r /tmp/aaa</span><br></pre></td></tr></table></figure>
<p>4）强制删除/tmp目录下匹配exp*的全部目录和文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rm -rf /tmp/exp*</span><br></pre></td></tr></table></figure>
<p>5）强制删除当前工作目录下的book和book.c文件</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rm -rf book book.c</span><br></pre></td></tr></table></figure>
<h2 id="12、移动目录和文件"><a href="#12、移动目录和文件" class="headerlink" title="12、移动目录和文件"></a>12、移动目录和文件</h2><p>mv 旧目录或文件名 新目录或文件名</p>
<p>如果第二个参数是已经存在的目录，则把第一个参数（旧目录或文件名）移动到该目录中。</p>
<p>示例：</p>
<p>1）把当前工作目录中的book.c文件重命名为book1.c</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mv book.c book1.c</span><br></pre></td></tr></table></figure>
<p>2）如果/tmp/test3是一个已经存在的目录，以下命令将把当前工作目录下的book.c文件移动到/tmp/test3目录中。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mv book.c /tmp/test3</span><br></pre></td></tr></table></figure>
<p>3）如果/tmp/test3目录不存在，以下命令将把当前工作目录下的book.c文件改名为/tmp/test3。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mv book.c /tmp/test3</span><br></pre></td></tr></table></figure>
<h2 id="13、复制目录和文件"><a href="#13、复制目录和文件" class="headerlink" title="13、复制目录和文件"></a>13、复制目录和文件</h2><p>cp [-r] 旧目录或文件名 新目录或文件名</p>
<p>选项-r可以复制目录，如果没有选项-r只能复制文件。</p>
<p>示例：</p>
<p>1）把当前工作目录下的book1.c文件复制为book2.c</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cp book1.c book2.c</span><br></pre></td></tr></table></figure>
<p>2）把当前工作目录下的aaa目录复制为bbb</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cp -r aaa bbb</span><br></pre></td></tr></table></figure>
<p>3）把当前工作目录下的book1.c文件复制为/tmp/book1.c</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cp book1.c /tmp/book1.c</span><br><span class="line">cp book1.c /tmp/.</span><br></pre></td></tr></table></figure>
<p>以上两个命令的效果相同。</p>
<p>4）把当前工作目录下的aaa目录复制为/tmp/aaa</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cp -r aaa /tmp/aaa</span><br><span class="line">cp -r aaa /tmp/.</span><br></pre></td></tr></table></figure>
<p>以上两个命令的效果相同。</p>
<h2 id="14、打包压缩和解包解压"><a href="#14、打包压缩和解包解压" class="headerlink" title="14、打包压缩和解包解压"></a>14、打包压缩和解包解压</h2><p>tar命令用来打包压缩和解包解压文件，类似windows的winrar工具。</p>
<h3 id="打包压缩的语法："><a href="#打包压缩的语法：" class="headerlink" title="打包压缩的语法："></a>打包压缩的语法：</h3><p>tar zcvf 压缩包文件名 目录或文件名列表</p>
<p>示例：</p>
<p>1）把当前工作目录的aaa、bbb和ccc目录打包压缩成123.tgz文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar zcvf 123.tgz aaa bbb ccc</span><br></pre></td></tr></table></figure>
<p>2）把/home/oracle/aaa、/home/oracle/bbb和/home/oracle/ccc目录打包压缩成/tmp/123.tgz文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar zcvf /tmp/123.tgz /home/oracle/aaa /home/oracle/bbb /home/oracle/ccc</span><br></pre></td></tr></table></figure>
<h3 id="解包解压的语法："><a href="#解包解压的语法：" class="headerlink" title="解包解压的语法："></a>解包解压的语法：</h3><p>tar zxvf压缩包文件名</p>
<p>示例：</p>
<p>1）把/tmp/123.tgz压缩包文件在当前工作目录下解压。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar zxvf /tmp/123.tgz</span><br></pre></td></tr></table></figure>
<p>2）把/tmp/123.tgz压缩包文件在/tmp/aaa目录下解压。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cd /tmp/aaa</span><br><span class="line"></span><br><span class="line">tar zxvf /tmp/123.tgz</span><br></pre></td></tr></table></figure>
<blockquote>
<p>注意：</p>
<p>1）用tar命令打包和解包的目录和文件没有绝对路径的说法，都成了相对的，在包中相对的。</p>
<p>2）用tar命令打包的文件，用winrar可以解开。</p>
<p>3）在Linux系统中，还有其它的打包压缩和解包解压命令，例如zip/unzip和gzip/gunzip。</p>
</blockquote>
<h2 id="15、判断网络是否连通"><a href="#15、判断网络是否连通" class="headerlink" title="15、判断网络是否连通"></a>15、判断网络是否连通</h2><p>Windows系统：</p>
<p>ping -n 包的个数 ip地址或域名</p>
<p>Linux系统：</p>
<p>ping -c 包的个数 ip地址或域名</p>
<p>ping用于确定本地主机是否能与另一台主机成功交换数据包，判断网络是否通畅。</p>
<p>127.0.0.1是指本地的ip地址，ping 127.0.0.1总是可以通的。</p>
<p>示例：</p>
<p>1）向本地主机（127.0.0.1）ping五个包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ping -c 5 127.0.0.1</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381889541051193.png" alt="image.png"></p>
<p>2）向新浪（www.sina.com.cn）的服务器ping五个包。</p>
<p><img src= "" data-lazy-src="1588381901421056289.png" alt="image.png"></p>
<p>新浪的服务器是可以ping通的。</p>
<p>3）向谷歌（www.google.com）的服务器ping五个包。</p>
<p><img src= "" data-lazy-src="1588381919169033167.png" alt="image.png"></p>
<p>谷歌的服务器是ping不通的。</p>
<h2 id="16、显示文本文件的内容"><a href="#16、显示文本文件的内容" class="headerlink" title="16、显示文本文件的内容"></a>16、显示文本文件的内容</h2><p>显示文本文件的内容有三个命令：cat、more和tail。</p>
<p>1）cat命令</p>
<p>cat 文件名</p>
<p>cat命令一次显示整个文件的内容。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cat book1.c</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381934195037062.png" alt="image.png"></p>
<p>2）more命令</p>
<p>more 文件名</p>
<p>为了方便阅读，more命令分页显示文件的内容，按空格键显示下一页，按b键显上一页，按q键退出。</p>
<p>3）tail命令</p>
<p>tail -f 文件名</p>
<p>tail -f用于显示文本文件的最后几行，如果文件的内容有增加，就实时的刷新。</p>
<p>对程序员来说，tail -f极其重要，可以动态显示后台服务程序的日志，用于调试和跟踪程序的运行。</p>
<h2 id="17、统计文本文件的行数、单词数和字节数"><a href="#17、统计文本文件的行数、单词数和字节数" class="headerlink" title="17、统计文本文件的行数、单词数和字节数"></a>17、统计文本文件的行数、单词数和字节数</h2><p>wc 文件名</p>
<p>示例：</p>
<p>1）统计当前工作目录处book2*.c文件的行数、单词数和字节数。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wc book2*.c</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381947436056980.png" alt="image.png"></p>
<h2 id="18、搜索文件中的内容"><a href="#18、搜索文件中的内容" class="headerlink" title="18、搜索文件中的内容"></a>18、搜索文件中的内容</h2><p>grep “内容” 文件名</p>
<p>注意，如果内容中没有空格等特殊字符，可以不用双引号括起来。</p>
<p>示例：</p>
<p>1）在*.c文件中搜索max</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grep max *.c</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1588381962891093074.png" alt="image.png"></p>
<h2 id="19、搜索文件"><a href="#19、搜索文件" class="headerlink" title="19、搜索文件"></a>19、搜索文件</h2><p>find 目录名 -name 文件名 -print</p>
<p>参数说明：</p>
<p>目录名：待搜索的目录，搜索文件的时候，除了这个目录名，还包括它的各级子目录。</p>
<p>文件名：待搜索的文件名匹配的规则。</p>
<p>示例：</p>
<p>1）从/tmp目录开始搜索，把全部的*.c文件显示出来。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">find /tmp -name *.c -print</span><br></pre></td></tr></table></figure>
<p>2）从当前工作目录开始搜索，把全部的*.c文件显示出来。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">find . -name *.c -print</span><br></pre></td></tr></table></figure>
<h2 id="20、增加-删除用户组"><a href="#20、增加-删除用户组" class="headerlink" title="20、增加/删除用户组"></a>20、增加/删除用户组</h2><h3 id="1）增加用户组"><a href="#1）增加用户组" class="headerlink" title="1）增加用户组"></a>1）增加用户组</h3><p>groupadd 组名</p>
<p>例如：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">groupadd dba</span><br></pre></td></tr></table></figure>
<h3 id="2）删除用户组"><a href="#2）删除用户组" class="headerlink" title="2）删除用户组"></a>2）删除用户组</h3><p>groupdel 组名</p>
<p>例如：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">groupdel dba</span><br></pre></td></tr></table></figure>
<h2 id="21、增加-删除用户"><a href="#21、增加-删除用户" class="headerlink" title="21、增加/删除用户"></a>21、增加/删除用户</h2><p>1）增加用户</p>
<p>useradd -n 用户名 -g 组名 -d 用户的主目录</p>
<p>例如增加一个用户，用户名为wucz，属于dba组，用户的主目录是/home/wucz，各位兄弟，wucz是我的名字，您可以改为您自己的名字。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">useradd -n wucz -g dba -d /home/wucz</span><br></pre></td></tr></table></figure>
<p>2）删除用户</p>
<p>userdel 用户名</p>
<p>例如删除wucz用户。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">userdel wucz</span><br></pre></td></tr></table></figure>
<h2 id="22、修改用户的密码"><a href="#22、修改用户的密码" class="headerlink" title="22、修改用户的密码"></a>22、修改用户的密码</h2><p>passwd [用户名]</p>
<p>修改用户的密码，按提示两次输入新密码，如果两次输入的密码相同就修改成功。</p>
<p>普通用户只能修改自己的密码，只输入passwd就可以了，不能指定用户名。</p>
<p>系统管理员可以修改任何用户的密码，passwd后需要指定用户名。</p>
<h2 id="23、切换用户"><a href="#23、切换用户" class="headerlink" title="23、切换用户"></a>23、切换用户</h2><p>在命令提示符下输入：su - root ，然后按提示输入root的密码后将切换到root用户。</p>
<p>从root用户切换到其它普通用户不需要输入密码，从普通用户切换到任何用户都需要输入密码。</p>
<p><img src= "" data-lazy-src="1588381981948067367.png" alt="image.png"></p>
<h2 id="24、修改目录和文件的主人和组"><a href="#24、修改目录和文件的主人和组" class="headerlink" title="24、修改目录和文件的主人和组"></a>24、修改目录和文件的主人和组</h2><p>chown [-R] 用户名:组名 目录或文件名列表</p>
<p>chown将目录或文件的拥有者修改为参数指定的用户名和组，目录或文件名列表用空格分隔。</p>
<p>-R 选项表示处理各及子目录。</p>
<p>示例：</p>
<p>1）把/oracle/home和/oracle/base及其子目录的主人改为oracle，组改为dba。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chown -R oracle:dba /oracle/home /oracle/base</span><br></pre></td></tr></table></figure>
<h2 id="25、查看系统磁盘空间"><a href="#25、查看系统磁盘空间" class="headerlink" title="25、查看系统磁盘空间"></a>25、查看系统磁盘空间</h2><p>df [-h] [-T]</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">df -h</span><br></pre></td></tr></table></figure>
<p>选项-h 以方便阅读的方式显示信息。</p>
<p>选项-T 列出文件系统类型。</p>
<p>示例：</p>
<p><img src= "" data-lazy-src="1588382003881041555.png" alt="image.png"></p>
<p><img src= "" data-lazy-src="1588382012509027703.png" alt="image.png"></p>
<h1 id="02、环境变量"><a href="#02、环境变量" class="headerlink" title="02、环境变量"></a>02、环境变量</h1><h2 id="一、什么是环境变量"><a href="#一、什么是环境变量" class="headerlink" title="一、什么是环境变量"></a>一、什么是环境变量</h2><h3 id="1、环境变量的含义"><a href="#1、环境变量的含义" class="headerlink" title="1、环境变量的含义"></a>1、环境变量的含义</h3><p>程序（操作系统命令和应用程序）的执行都需要运行环境，这个环境是由多个环境变量组成的。</p>
<h3 id="2、环境变量的分类"><a href="#2、环境变量的分类" class="headerlink" title="2、环境变量的分类"></a>2、环境变量的分类</h3><p>1）按生效的范围分类。</p>
<p><strong>系统环境变量</strong>：公共的，对全部的用户都生效。</p>
<p><strong>用户环境变量</strong>：用户私有的、自定义的个性化设置，只对该用户生效。</p>
<p>2）按生存周期分类。</p>
<p><strong>永久环境变量</strong>：在环境变量脚本文件中配置，用户每次登录时会自动执行这些脚本，相当于永久生效。</p>
<p><strong>临时环境变量</strong>：使用时在Shell中临时定义，退出Shell后失效。</p>
<h3 id="3、Linux环境变量"><a href="#3、Linux环境变量" class="headerlink" title="3、Linux环境变量"></a>3、Linux环境变量</h3><p>Linux环境变量也称之为Shell环境量变，以下划线和字母打头，由下划线、字母（区分大小写）和数字组成，</p>
<p>习惯上使用大写字母，例如PATH、HOSTNAME、LANG等。</p>
<h2 id="二、常用的环境变量"><a href="#二、常用的环境变量" class="headerlink" title="二、常用的环境变量"></a>二、常用的环境变量</h2><h3 id="1、查看环境变量"><a href="#1、查看环境变量" class="headerlink" title="1、查看环境变量"></a>1、查看环境变量</h3><h4 id="1）env命令"><a href="#1）env命令" class="headerlink" title="1）env命令"></a>1）env命令</h4><p>在Shell下，用env命令查看当前用户全部的环境变量。</p>
<p><img src= "" data-lazy-src="1594626412004083135.png" alt="图片.png"></p>
<p>上图只截取了部分环境变量，并非全部。</p>
<p>用env命令的时候，满屏显示了很多环境变量，不方便查看，可以用grep筛选。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">env|grep 环境变量名</span><br></pre></td></tr></table></figure>
<p>例如查看环境变量名中包含PATH的环境变量。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">env|grep PATH</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1584493962788023266.png" alt="image.png"></p>
<p>2）echo命令</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">echo $环境变量名</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1584493976176020727.png" alt="image.png"></p>
<p>注意，符号$不能缺少，这是语法规定。</p>
<h3 id="2、常用的环境变量"><a href="#2、常用的环境变量" class="headerlink" title="2、常用的环境变量"></a>2、常用的环境变量</h3><p>1）PATH</p>
<p>可执行程序的搜索目录，可执行程序包括Linux系统命令和用户的应用程序，PATH变量的具体用法本文后面的章节中有详细的介绍。</p>
<p><img src= "" data-lazy-src="1584493993156031998.png" alt="image.png"></p>
<p>2）LANG</p>
<p>Linux系统的语言、地区、字符集，LANG变量的具体用法本文后面的章节中有详细的介绍。</p>
<p><img src= "" data-lazy-src="1584494006552051021.png" alt="image.png"></p>
<p>3）HOSTNAME</p>
<p>服务器的主机名。</p>
<p>4）SHELL</p>
<p>用户当前使用的Shell解析器。</p>
<p>5）HISTSIZE</p>
<p>保存历史命令的数目。</p>
<p>6）USER</p>
<p>当前登录用户的用户名。</p>
<p>7）HOME</p>
<p>当前登录用户的主目录。</p>
<p>8）PWD</p>
<p>当前工作目录。</p>
<p>9）LD_LIBRARY_PATH</p>
<p>C/C++语言动态链接库文件搜索的目录，它不是Linux缺省的环境变量，但对C/C++程序员来说非常重要，具体用法本文后面的章节中有详细的介绍。</p>
<p>10）CLASSPATH</p>
<p>JAVA语言库文件搜索的目录，它也不是Linux缺省的环境变量，但对JAVA程序员来说非常重要，具体用法本文后面的章节中有详细的介绍。</p>
<h2 id="三、设置环境量"><a href="#三、设置环境量" class="headerlink" title="三、设置环境量"></a>三、设置环境量</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">变量名=&#x27;值&#x27;</span><br><span class="line">export 变量名</span><br></pre></td></tr></table></figure>
<p>或</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">export 变量名=&#x27;值&#x27;</span><br></pre></td></tr></table></figure>
<p>如果环境变量的值没有空格等特殊符号，可以不用单引号包含。</p>
<p>示例：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">export ORACLE_HOME=/oracle/home</span><br><span class="line">export ORACLE_BASE=/oracle/base</span><br><span class="line">export ORACLE_SID=snorcl11g</span><br><span class="line">export NLS_LANG=&#x27;Simplified Chinese_China.ZHS16GBK&#x27;</span><br><span class="line">export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:.</span><br><span class="line">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:.</span><br></pre></td></tr></table></figure>
<p>采用export设置的环境变量，在退出Shell后就会失效，下次登录时需要重新设置。如果希望环境变量永久生效，需要在登录脚本文件中配置。</p>
<h3 id="1、系统环境变量"><a href="#1、系统环境变量" class="headerlink" title="1、系统环境变量"></a>1、系统环境变量</h3><p>系统环境变量对全部的用户生效，设置系统环境变量有三种方法。</p>
<p>1）在/etc/profile文件中设置。</p>
<p>用户登录时执行/etc/profile文件中设置系统的环境变量。但是，Linux不建议在/etc/profile文件中设置系统环境变量。</p>
<p>2）在/etc/profile.d目录中增加环境变量脚本文件，这是Linux推荐的方法。</p>
<p>/etc/profile在每次启动时会执行 /etc/profile.d下全部的脚本文件。/etc/profile.d比/etc/profile好维护，不想要什么变量直接删除 /etc/profile.d下对应的 shell 脚本即可。</p>
<p>/etc/profile.d目录下有很多脚本文件，例如：</p>
<p><img src= "" data-lazy-src="1584494069551087486.png" alt="image.png"></p>
<p>在以上示例中，/etc/profile.d目录中的oracle.sh是Oracle数据库的环境变量配置文件，内容如下：</p>
<p><img src= "" data-lazy-src="1584494082197084532.png" alt="image.png"></p>
<p>3）在/etc/bashrc文件中设置环境变量。</p>
<p>该文件配置的环境变量将会影响全部用户使用的bash shell。但是，Linux也不建议在/etc/bashrc文件中设置系统环境变量。</p>
<h3 id="2、用户环境变量"><a href="#2、用户环境变量" class="headerlink" title="2、用户环境变量"></a>2、用户环境变量</h3><p>用户环境变量只对当前用户生效，设置用户环境变量也有多种方法。</p>
<p>在用户的主目录，有几个特别的文件，用ls是看不见的，用ls .bash_*可以看见。</p>
<p><img src= "" data-lazy-src="1584494097502047389.png" alt="image.png"></p>
<p>1）.bash_profile（推荐首选）</p>
<p>当用户登录时执行，每个用户都可以使用该文件来配置专属于自己的环境变量。</p>
<p>2）.bashrc</p>
<p>当用户登录时以及每次打开新的Shell时该文件都将被读取，不推荐在里面配置用户专用的环境变量，</p>
<p>因为每开一个Shell，该文件都会被读取一次，效率肯定受影响。</p>
<p>3）.bash_logout</p>
<p>当每次退出系统（退出bash shell）时执行该文件。</p>
<p>4）.bash_history</p>
<p>保存了当前用户使用过的历史命令。</p>
<h3 id="3、环境变量脚本文件的执行顺序"><a href="#3、环境变量脚本文件的执行顺序" class="headerlink" title="3、环境变量脚本文件的执行顺序"></a>3、环境变量脚本文件的执行顺序</h3><p>环境变量脚本文件的执行顺序如下：</p>
<p>/etc/profile-&gt;/etc/profile.d-&gt;/etc/bashrc-&gt;用户的.bash_profile-&gt;用户的.bashrc</p>
<p>同名的环境变量，如果在多个脚本中有配置，以最后执行的脚本中的配置为准。</p>
<p>还有一个问题需要注意，在/etc/profile中执行了/etc/profile.d的脚本，代码如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">for i in /etc/profile.d/*.sh ; do</span><br><span class="line">    if [ -r &quot;$i&quot; ]; then</span><br><span class="line">        if [ &quot;$&#123;-#*i&#125;&quot; != &quot;$-&quot; ]; then</span><br><span class="line">            . &quot;$i&quot;</span><br><span class="line">        else</span><br><span class="line">            . &quot;$i&quot; &gt;/dev/null</span><br><span class="line">        fi</span><br><span class="line">    fi</span><br><span class="line">done</span><br></pre></td></tr></table></figure>
<p>所以，/etc/profile.d和/etc/profile的执行顺序还要看代码怎么写。</p>
<h2 id="四、重要环境变量的详解"><a href="#四、重要环境变量的详解" class="headerlink" title="四、重要环境变量的详解"></a>四、重要环境变量的详解</h2><h3 id="1、PATH环境变量"><a href="#1、PATH环境变量" class="headerlink" title="1、PATH环境变量"></a>1、PATH环境变量</h3><p>可执行程序的搜索目录，可执行程序包括Linux系统命令和用户的应用程序。如果可执行程序的目录不在PATH指定的目录中，执行时需要指定目录。</p>
<p>1）PATH环境变量存放的是目录列表，目录之间用冒号:分隔，最后的圆点.表示当前目录。</p>
<p>export PATH=目录1:目录2:目录3:……目录n:.</p>
<p>2）PATH缺省包含了Linux系统命令所在的目录（/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin），如果不包含这些目录，Linux的常用命令也无法执行（要输入绝对路径才能执行）。</p>
<p>示例：</p>
<p><img src= "" data-lazy-src="1584494134036053965.png" alt="image.png"></p>
<p>3）在用户的.bash_profile文件中，会对PATH进行扩充，如下：</p>
<p>export PATH=$PATH:$HOME/bin</p>
<p>4）如果PATH变量中没有包含圆点.，执行当前目录下的程序需要加./或使用绝对路径。</p>
<p>示例：</p>
<p><img src= "" data-lazy-src="1584494150347058546.png" alt="image.png"></p>
<h3 id="2、LANG环境变量"><a href="#2、LANG环境变量" class="headerlink" title="2、LANG环境变量"></a>2、LANG环境变量</h3><p>LANG环境变量存放的是Linux系统的语言、地区、字符集，它不需要系统管理员手工设置，/etc/profile会调用/etc/profile.d/lang.sh脚本完成对LANG的设置。</p>
<p><a target="_blank" rel="noopener" href="https://www.linuxidc.com/topicnews.aspx?tid=14">CentOS</a>6.x 字符集配置文件在/etc/syscconfig/i18n文件中。</p>
<p>CentOS7.x 字符集配置文件在/etc/locale.conf文件中，内容如下：</p>
<p><img src= "" data-lazy-src="1584494165241004525.png" alt="image.png"></p>
<h3 id="3、LD-LIBRARY-PATH环境变量"><a href="#3、LD-LIBRARY-PATH环境变量" class="headerlink" title="3、LD_LIBRARY_PATH环境变量"></a>3、LD_LIBRARY_PATH环境变量</h3><p>C/C++语言动态链接库文件搜索的目录，它不是Linux缺省的环境变量，但对C/C++程序员来说非常重要。</p>
<p>LD_LIBRARY_PATH环境变量存放的也是目录列表，目录之间用冒号:分隔，最后的圆点.表示当前目录，与PATH的格式相同。</p>
<p>export LD_LIBRARY_PATH=目录1:目录2:目录3:……目录n:.</p>
<h3 id="4、CLASSPATH"><a href="#4、CLASSPATH" class="headerlink" title="4、CLASSPATH"></a>4、CLASSPATH</h3><p>JAVA语言库文件搜索的目录，它也不是Linux缺省的环境变量，但对JAVA程序员来说非常重要。</p>
<p>CLASSPATH环境变量存放的也是目录列表，目录之间用冒号:分隔，最后的圆点.表示当前目录，与PATH的格式相同。</p>
<h2 id="五、环境变量的生效"><a href="#五、环境变量的生效" class="headerlink" title="五、环境变量的生效"></a>五、环境变量的生效</h2><p>1）在Shell下，用export设置的环境变量对当前Shell立即生效，Shell退出后失效。</p>
<p>2）在脚本文件中设置的环境变量不会立即生效，退出Shell后重新登录时才生效，或者用source命令让它立即生效，例如：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">source /etc/profile</span><br></pre></td></tr></table></figure>
<h2 id="六、应用经验"><a href="#六、应用经验" class="headerlink" title="六、应用经验"></a>六、应用经验</h2><p>虽然设置环境变量的方法有多种，但是建议系统环境变量建议在/etc/profile.d目录中配置，</p>
<p>用户环境变量在用户的.bash_profile中配置，不建议在其它脚本文件中配置环境变，会增加运维的麻烦，容易出错。</p>
<h1 id="03、安装软件"><a href="#03、安装软件" class="headerlink" title="03、安装软件"></a>03、安装软件</h1><h2 id="一、rpm安装"><a href="#一、rpm安装" class="headerlink" title="一、rpm安装"></a>一、rpm安装</h2><p>RPM是RedHat Package Manager的缩写，由RedHat推出的软件包管理管理工具，在Fedora 、Redhat、CentOS、Mandriva、SuSE、YellowDog等主流发行版本，以及在这些版本基础上二次开发出来的发行版采用。</p>
<p>RPM包里面包含可执行的二进制程序，自身所带的附加文件，版本文件（软件包的依赖关系）。</p>
<h3 id="1、查看系统中已安装的软件包"><a href="#1、查看系统中已安装的软件包" class="headerlink" title="1、查看系统中已安装的软件包"></a>1、查看系统中已安装的软件包</h3><p>1）查看已安装的软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -q 软件包名</span><br></pre></td></tr></table></figure>
<p>例如查看ftp客户端和ftp服务端软件包：</p>
<p><img src= "" data-lazy-src="1584495321473077127.png" alt="image.png"></p>
<p>2）查看软件包安装的目录和文件（包括了可执行程序、配置文件和帮助文档）。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -ql 软件包名</span><br></pre></td></tr></table></figure>
<p>例如查看ftp客户端：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -ql ftp</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1584495346991063305.png" alt="image.png"></p>
<p>3）查看已安装软件包的详细信息。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -qi 软件包名</span><br></pre></td></tr></table></figure>
<p>例如查看ftp客户端（显示内容太多，部分截图）：</p>
<p><img src= "" data-lazy-src="1584495386099001816.png" alt="image.png"></p>
<p>4）查看已安装软件包的配置。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -qc 软件包名</span><br></pre></td></tr></table></figure>
<p>例如查看ftp服务端：</p>
<p><img src= "" data-lazy-src="1584495402401048092.png" alt="image.png"></p>
<p>5）查看已安装软件包所依赖的软件包及文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -qR 软件包名</span><br></pre></td></tr></table></figure>
<p>例如查看ftp客户端（显示内容太多，部分截图）：</p>
<p><img src= "" data-lazy-src="1584495427557029080.png" alt="image.png"></p>
<h3 id="2、查看软件包的安装文件"><a href="#2、查看软件包的安装文件" class="headerlink" title="2、查看软件包的安装文件"></a>2、查看软件包的安装文件</h3><p>安装包文件的后缀是.rpm，以CentOS7为例，系统安装的光盘映像文件是CentOS-7-x86_64-DVD-1908.iso</p>
<p>解开后在Packages目录中有软件包的安装文件，如下：</p>
<p><img src= "" data-lazy-src="1584495451614069285.png" alt="image.png"></p>
<p>接下来以ftp的客户端安装包文件ftp-0.17-67.el7.x86_64.rpm为例来介绍安装包文件的查看方法。</p>
<p>1）查看一个软件包的安装文件的详细信息。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -qpi 软件包的安装文件名</span><br></pre></td></tr></table></figure>
<p>（显示内容太多，部分截图）</p>
<p><img src= "" data-lazy-src="1584495477846021109.png" alt="image.png"></p>
<p>2）查看软件包的安装文件所包含的文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -qpl 软件安装包文件名</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1584495502116091669.png" alt="image.png"></p>
<p>3）查看软件包的依赖关系。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -qpR 软件包的安装文件名</span><br></pre></td></tr></table></figure>
<p>（显示内容太多，部分截图）</p>
<p><img src= "" data-lazy-src="1584495518790040947.png" alt="image.png"></p>
<h3 id="3、安装-升级软件包"><a href="#3、安装-升级软件包" class="headerlink" title="3、安装/升级软件包"></a>3、安装/升级软件包</h3><p>如果待安装/升级的软件与其它的软件有依赖关系，请解决依赖关系，即先安装/升级依赖关系的软件包。如果没有解决好依赖关系，可以强制安装/升级，不推荐采用强制的方法，因为有可能导致软件不可用。</p>
<p>1）安装软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -ivh 软件包的安装文件名</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1584495549511095479.png" alt="image.png"></p>
<p>2）升级软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -Uvh 软件包的安装文件名</span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1600482223183038461.png" alt="图片.png"></p>
<p>3）强制安装软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpm -ivh 软件包的安装文件名 --nodeps --force</span><br></pre></td></tr></table></figure>
<p>4）强制升级软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rpv -Uvh 软件包的安装文件名 --nodeps --force</span><br></pre></td></tr></table></figure>
<h3 id="4、删除软件包"><a href="#4、删除软件包" class="headerlink" title="4、删除软件包"></a>4、删除软件包</h3><p>rpm -e 软件包名</p>
<p>例如删除ftp客户端软件包：</p>
<p><img src= "" data-lazy-src="1584495604529000784.png" alt="image.png"></p>
<h2 id="二、yum安装"><a href="#二、yum安装" class="headerlink" title="二、yum安装"></a>二、yum安装</h2><p>rpm安装软件包的虽然方便，但是需要手工解决软件包的依赖关系。很多时候安装一个软件包需要安装多个其他软件包，还有不同版本的兼容性问题，很复杂。yum（Yellow dog Updater, Modified）解决了这些问题，yum是rpm的前端程序，设计的主要目的就是为了自动解决rpm的依赖关系，有以下优点：</p>
<p>1) 自动解决依赖关系；</p>
<p>2) 可以对rpm进行分组，基于组进行安装操作；</p>
<p>3) 引入仓库概念，支持多个仓库；</p>
<p>4) 配置简单。</p>
<h3 id="1、yum的语法"><a href="#1、yum的语法" class="headerlink" title="1、yum的语法"></a>1、yum的语法</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum [options] [command] [package ...]</span><br></pre></td></tr></table></figure>
<p>options：可选参数：</p>
<p>​    1）-h帮助；</p>
<p>​    2）-y，当安装过程提示选择全部为yes，不需要再次确认；</p>
<p>​    3）-q，不显示安装的过程。</p>
<p>command：待操作的命令。</p>
<p>package：待操作的软件包名，多个软件包之间用空格分开，支持用星号*匹配。</p>
<h3 id="2、yum的常用命令"><a href="#2、yum的常用命令" class="headerlink" title="2、yum的常用命令"></a>2、yum的常用命令</h3><p>最最常用的命令加粗显示。</p>
<p>1）安装/升级软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install 软件包名/软件包文件名</span><br></pre></td></tr></table></figure>
<p>2）升级软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum update 软件包名</span><br></pre></td></tr></table></figure>
<p>3）删除软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum remove 软件包名</span><br></pre></td></tr></table></figure>
<p>4）查找软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum search 软件包名</span><br></pre></td></tr></table></figure>
<p>5）列出所有可更新的软件包清单。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum check-update</span><br></pre></td></tr></table></figure>
<p>6）更新所有软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum update</span><br></pre></td></tr></table></figure>
<p>7）列出所有可安装软件包的清单；</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum list</span><br></pre></td></tr></table></figure>
<p>8）清除缓存。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum clean [headers|packages|metadata|dbcache|plugins|expire-cache|all]</span><br></pre></td></tr></table></figure>
<h3 id="3、示例"><a href="#3、示例" class="headerlink" title="3、示例"></a>3、示例</h3><p>1）安装/升级ftp客户端软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">yum -y install ftp</span><br><span class="line"></span><br><span class="line">或</span><br><span class="line"></span><br><span class="line">yum -y install ftp-0.17-67.el7.x86_64.rpm</span><br></pre></td></tr></table></figure>
<p>2）升级ftp客户端软件包</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum -y update ftp</span><br></pre></td></tr></table></figure>
<p>3）删除ftp客户端软件包。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum -y remove ftp</span><br></pre></td></tr></table></figure>
<h2 id="三、应用经验"><a href="#三、应用经验" class="headerlink" title="三、应用经验"></a>三、应用经验</h2><p>1）rpm安装/升级软件包需要手工的解决包的依赖关系，这一点让人确实很烦，所以，软件包的安装/升级一般采用yum命令。</p>
<p>2）rpm的某些功能，例如查看软件包的详细信息、软件包的安装目录、软件包的配置文件等还是有实用价值的。</p>
<h1 id="04、系统服务管理"><a href="#04、系统服务管理" class="headerlink" title="04、系统服务管理"></a>04、系统服务管理</h1><h2 id="一、systemctl介绍"><a href="#一、systemctl介绍" class="headerlink" title="一、systemctl介绍"></a>一、systemctl介绍</h2><p>CentOS7启用了新的系统和服务管理器，采用systemctl命令代替了老版本的service和chkconfig。为了保持兼容性，在CentOS7中，老版本的service和chkconfig命令仍然可以使用。</p>
<p>systemctl命令是system（系统）和control（控制）两个单词的简写，它是一个功能强大的命令，本文只介绍与服务管理相关的用法。</p>
<p>systemctl命令有一点不足，就是很多命令执行后没有提示信息，例如下图：</p>
<p><img src= "" data-lazy-src="1584495920027025227.png" alt="image.png"></p>
<p>上图中，执行启动和停止服务命令后没有“服务已启动”或“服务已关闭”等提示信息，让人很不习惯。还有，start和stop各执行了两次，也没有任何提示信息，这也让人很不习惯。</p>
<h2 id="二、systemctl常用命令"><a href="#二、systemctl常用命令" class="headerlink" title="二、systemctl常用命令"></a>二、systemctl常用命令</h2><h3 id="1、启动服务"><a href="#1、启动服务" class="headerlink" title="1、启动服务"></a>1、启动服务</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl start name.service</span><br></pre></td></tr></table></figure>
<p>注意name.service的.service可以省略不写，以下两条命令的效果相同。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">systemctl start vsftpd       # 启动ftp服务。</span><br><span class="line"></span><br><span class="line">systemctl start vsftpd.service   # 启动ftp服务。</span><br></pre></td></tr></table></figure>
<h3 id="2、停止服务"><a href="#2、停止服务" class="headerlink" title="2、停止服务"></a>2、停止服务</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl stop name.service</span><br></pre></td></tr></table></figure>
<h3 id="3、重启服务"><a href="#3、重启服务" class="headerlink" title="3、重启服务"></a>3、重启服务</h3><p>如果服务没有启动，就启动它。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl restart name.service</span><br></pre></td></tr></table></figure>
<h3 id="4、查看服务是否已启动"><a href="#4、查看服务是否已启动" class="headerlink" title="4、查看服务是否已启动"></a>4、查看服务是否已启动</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl is-active name.service</span><br></pre></td></tr></table></figure>
<h3 id="5、查看服务的状态"><a href="#5、查看服务的状态" class="headerlink" title="5、查看服务的状态"></a>5、查看服务的状态</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl status name.service</span><br></pre></td></tr></table></figure>
<p>示例：</p>
<p><img src= "" data-lazy-src="1584495948370086356.png" alt="image.png"></p>
<p>Loaded：关于服务是否已经加载的信息，文件的绝对路径以及是否被启用的注释。</p>
<p>Active：服务是否正在运行,然后是启动时间信息。</p>
<p>Process：进程额外信息。</p>
<p>Main PID：服务主进程pid。</p>
<p>CGroup:Control Groups额外信息。</p>
<h3 id="6、启用开机自启动服务"><a href="#6、启用开机自启动服务" class="headerlink" title="6、启用开机自启动服务"></a>6、启用开机自启动服务</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl enable name.service</span><br></pre></td></tr></table></figure>
<h3 id="7、停用开机自启动服务"><a href="#7、停用开机自启动服务" class="headerlink" title="7、停用开机自启动服务"></a>7、停用开机自启动服务</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl disable name.service</span><br></pre></td></tr></table></figure>
<h3 id="8、查看服务是否为开机自启动"><a href="#8、查看服务是否为开机自启动" class="headerlink" title="8、查看服务是否为开机自启动"></a>8、查看服务是否为开机自启动</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl is-enabled name.service</span><br></pre></td></tr></table></figure>
<h3 id="9、只重启正在运行中的服务"><a href="#9、只重启正在运行中的服务" class="headerlink" title="9、只重启正在运行中的服务"></a>9、只重启正在运行中的服务</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl try-restart name.service</span><br></pre></td></tr></table></figure>
<h3 id="10、显示所有的服务状态"><a href="#10、显示所有的服务状态" class="headerlink" title="10、显示所有的服务状态"></a>10、显示所有的服务状态</h3><p>按空格键显示下一页，按q键退出。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl list-units --type service --all</span><br></pre></td></tr></table></figure>
<h3 id="11、查看启动成功的服务列表"><a href="#11、查看启动成功的服务列表" class="headerlink" title="11、查看启动成功的服务列表"></a>11、查看启动成功的服务列表</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl list-unit-files|grep enabled</span><br></pre></td></tr></table></figure>
<h3 id="12、查看启动失败的服务列表"><a href="#12、查看启动失败的服务列表" class="headerlink" title="12、查看启动失败的服务列表"></a>12、查看启动失败的服务列表</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl --failed</span><br></pre></td></tr></table></figure>
<h3 id="13、查看所有服务的状态"><a href="#13、查看所有服务的状态" class="headerlink" title="13、查看所有服务的状态"></a>13、查看所有服务的状态</h3><p>按空格键显示下一页，按q键退出。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl list-unit-files --type service</span><br></pre></td></tr></table></figure>
<h3 id="14、列出在指定服务之前启动的服务（依赖）"><a href="#14、列出在指定服务之前启动的服务（依赖）" class="headerlink" title="14、列出在指定服务之前启动的服务（依赖）"></a>14、列出在指定服务之前启动的服务（依赖）</h3><p>按空格键显示下一页，按q键退出。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl list-dependencies --after name.service</span><br></pre></td></tr></table></figure>
<h3 id="15、列出在指定服务之后启动的服务（被依赖）"><a href="#15、列出在指定服务之后启动的服务（被依赖）" class="headerlink" title="15、列出在指定服务之后启动的服务（被依赖）"></a>15、列出在指定服务之后启动的服务（被依赖）</h3><p>按空格键显示下一页，按q键退出。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl list-dependencies --before name.service</span><br></pre></td></tr></table></figure>
<h1 id="05、防火墙配置"><a href="#05、防火墙配置" class="headerlink" title="05、防火墙配置"></a>05、防火墙配置</h1><h2 id="1、查看防火墙的命令"><a href="#1、查看防火墙的命令" class="headerlink" title="1、查看防火墙的命令"></a>1、查看防火墙的命令</h2><p>1）查看防火墙的版本。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --version</span><br></pre></td></tr></table></figure>
<p>2）查看firewall的状态。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --state</span><br></pre></td></tr></table></figure>
<p>3）查看firewall服务状态（普通用户可执行）。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl status firewalld</span><br></pre></td></tr></table></figure>
<p>4）查看防火墙全部的信息。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --list-all</span><br></pre></td></tr></table></figure>
<p>5）查看防火墙已开通的端口。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --list-port</span><br></pre></td></tr></table></figure>
<p>6）查看防火墙已开通的服务。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --list-service</span><br></pre></td></tr></table></figure>
<p>7）查看全部的服务列表（普通用户可执行）。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --get-services</span><br></pre></td></tr></table></figure>
<p>8）查看防火墙服务是否开机启动。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl is-enabled firewalld</span><br></pre></td></tr></table></figure>
<h2 id="2、配置防火墙的命令"><a href="#2、配置防火墙的命令" class="headerlink" title="2、配置防火墙的命令"></a>2、配置防火墙的命令</h2><p> 1）启动、重启、关闭防火墙服务。</p>
<p># 启动</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl start firewalld</span><br></pre></td></tr></table></figure>
<p># 重启</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl restart firewalld</span><br></pre></td></tr></table></figure>
<p># 关闭</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl stop firewalld</span><br></pre></td></tr></table></figure>
<p>2）开放、移去某个端口。</p>
<p># 开放80端口</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --zone=public --add-port=80/tcp --permanent</span><br></pre></td></tr></table></figure>
<p># 移去80端口</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --zone=public --remove-port=80/tcp --permanent</span><br></pre></td></tr></table></figure>
<p>3）开放、移去范围端口。</p>
<p># 开放5000-5500之间的端口</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --zone=public --add-port=5000-5500/tcp --permanent</span><br></pre></td></tr></table></figure>
<p># 移去5000-5500之间的端口</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --zone=public --remove-port=5000-5500/tcp --permanent</span><br></pre></td></tr></table></figure>
<p>4）开放、移去服务。</p>
<p># 开放ftp服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --zone=public --add-service=ftp --permanent</span><br></pre></td></tr></table></figure>
<p># 移去http服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --zone=public --remove-service=ftp --permanent</span><br></pre></td></tr></table></figure>
<p>5）重新加载防火墙配置（修改配置后要重新加载防火墙配置或重启防火墙服务）。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firewall-cmd --reload</span><br></pre></td></tr></table></figure>
<p>6）设置开机时启用、禁用防火墙服务。</p>
<p># 启用服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl enable firewalld</span><br></pre></td></tr></table></figure>
<p># 禁用服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl disable firewalld</span><br></pre></td></tr></table></figure>
<h2 id="3、centos7以下版本"><a href="#3、centos7以下版本" class="headerlink" title="3、centos7以下版本"></a>3、centos7以下版本</h2><p>1）开放80，22，8080 端口。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT</span><br><span class="line">/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT</span><br><span class="line">/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT</span><br></pre></td></tr></table></figure>
<p>2）保存。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/etc/rc.d/init.d/iptables save</span><br></pre></td></tr></table></figure>
<p>3）查看打开的端口。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/etc/init.d/iptables status</span><br></pre></td></tr></table></figure>
<p>4）启动、关闭防火墙服务。</p>
<p># 启动服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">service iptables start</span><br></pre></td></tr></table></figure>
<p># 关闭服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">service iptables stop</span><br></pre></td></tr></table></figure>
<p>5）设置开机时启用、禁用防火墙服务。</p>
<p># 启用服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chkconfig iptables on</span><br></pre></td></tr></table></figure>
<p># 禁用服务</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chkconfig iptables off</span><br></pre></td></tr></table></figure>
<h1 id="06、计划任务"><a href="#06、计划任务" class="headerlink" title="06、计划任务"></a>06、计划任务</h1><h2 id="一、计划任务的基本概念"><a href="#一、计划任务的基本概念" class="headerlink" title="一、计划任务的基本概念"></a>一、计划任务的基本概念</h2><p>linux系统采用crond守护进程来控制系统和用户的计划任务，实现周期性的执行某种任务或处理某些事件。</p>
<p>Linux系统本身就有很多的计划任务，所以crond服务是默认安装和启动的。crond服务每分钟都会检查是否有需要执行的任务，如果有则自动执行该任务。执行以下命令可以看到crond服务的运行情况：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl status crond </span><br></pre></td></tr></table></figure>
<p><img src= "" data-lazy-src="1584754964210017781.png" alt="image.png"></p>
<p>Linux下的计划任务分为两种：用户计划任务和系统计划任务。</p>
<h2 id="二、用户计划任务"><a href="#二、用户计划任务" class="headerlink" title="二、用户计划任务"></a>二、用户计划任务</h2><p>Linux的每个用户可以定义自己的计划任务，周期性的执行脚本或程序。计划任务的内容存放在crontab文件中，每个用户都有自己的crontab文件。</p>
<h3 id="1、查看crontab文件"><a href="#1、查看crontab文件" class="headerlink" title="1、查看crontab文件"></a>1、查看crontab文件</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">crontab -l [-u 用户名]</span><br></pre></td></tr></table></figure>
<p>root用户可以用-u参数查看指定用户的计划任务，如果没有-u参数，表示查看自己的计划任务。普通用户只查看自己的计划任务，不允许使用-u参数。</p>
<h3 id="2、编辑crontab文件"><a href="#2、编辑crontab文件" class="headerlink" title="2、编辑crontab文件"></a>2、编辑crontab文件</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">crontab -e [-u 用户名]</span><br></pre></td></tr></table></figure>
<p>root用户可以用-u参数编辑指定用户的计划任务，如果没有-u参数，表示编辑自己的计划任务。普通用户只能编辑自己的计划任务，不允许使用-u参数。crontab缺省的编辑工具是vi。</p>
<h3 id="3、删除crontab文件"><a href="#3、删除crontab文件" class="headerlink" title="3、删除crontab文件"></a>3、删除crontab文件</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">crontab -r [-u 用户名]</span><br></pre></td></tr></table></figure>
<p>root用户可以用-u参数删除指定用户的计划任务，如果没有-u参数，表示删除自己的计划任务。普通用户只删除自己的计划任务，不允许使用-u参数。</p>
<h3 id="4、crontab文件格式"><a href="#4、crontab文件格式" class="headerlink" title="4、crontab文件格式"></a>4、crontab文件格式</h3><p><img src= "" data-lazy-src="1584754984384091342.png" alt="image.png"></p>
<p>crontab文件中的每个任务由两部分组成，执行时间和执行命令。</p>
<p><strong>1）执行时间，有5个参数：</strong></p>
<blockquote>
<p>第1部分：分钟（minute），取值0-59。</p>
<p>第2部分：小时（hour），取值0-23。</p>
<p>第3部分：月当中的天（day of month），取值1-31，。</p>
<p>第4部分：月份（month），取值1-12，或采用月份单词的英文简写。</p>
<p>第5部分：星期中的天（day of week），取值0-6，或采用星期单词的英文简写。</p>
<p>在以上各部分中，还可以使用以下特殊字符：</p>
<p>星号（*）：代表全部的值，例如day of month字段如果是星号，则表示在满足其它字段的制约条件后每天执行该任务。</p>
<p>逗号（,）：可以用逗号分隔开的值指定一个列表，例如，“1,2,5,7,8,9”。</p>
<p>中杠（-）：可以中杠表示一个范围，例如“2-6”表示“2,3,4,5,6”。</p>
<p>正斜线（/）：可以用正斜线指定时间的间隔频率，例如minute字段，“0-30/5”表示在0-30的范围内每5分钟执行一次；“*/5”表示每十分钟执行一次。</p>
</blockquote>
<p><strong>2）执行命令：任务执行的程序，可以是shell脚本，也可以是其它的可执行文件，但是要注意几个问题：</strong></p>
<blockquote>
<p>a）crontab中执行程序的时候，不会先执行系统和用户的环境变量文件，如果待执行的程序需要环境变量，程序将无法执行；</p>
<p>b）crontab中执行的程序必须采用全路径。</p>
</blockquote>
<h3 id="5、crontab示例"><a href="#5、crontab示例" class="headerlink" title="5、crontab示例"></a>5、crontab示例</h3><p>1）每两分钟执行一次date命令，结果输出到/tmp/date.log文件（下同）。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">*/2 * * * * /usr/bin/date &gt; /tmp/date.log</span><br></pre></td></tr></table></figure>
<p>2）在每个小时的05、10、15分执行一次date命令。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">5,10,15 * * * * /usr/bin/date &gt; /tmp/date.log</span><br></pre></td></tr></table></figure>
<p>3）在每个小时20-30分之间的每一分钟执行一次date命令。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">20-30 * * * * /usr/bin/date &gt; /tmp/date.log</span><br></pre></td></tr></table></figure>
<p>4）在每天的10:30分执行一次date命令。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">30 10 * * * /usr/bin/date &gt; /tmp/date.log</span><br></pre></td></tr></table></figure>
<p>5）在每个月1号的02:30分执行一次date命令。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">30 02 1 * * /usr/bin/date &gt; /tmp/date.log</span><br></pre></td></tr></table></figure>
<p>6）在每星期天的02:30分执行一次date命令。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">30 02 * * 0 /usr/bin/date &gt; /tmp/date.log</span><br></pre></td></tr></table></figure>
<h2 id="三、系统计划任务"><a href="#三、系统计划任务" class="headerlink" title="三、系统计划任务"></a>三、系统计划任务</h2><p>网上很多文章认为系统计划任务是执行系统级别的周期性任务，例如系统备份、把缓存数据写入硬盘、清理日志文件等。这些说法有些片面，我不这么认为，我先介绍系统计划任务的相关知识，然后通过示例来演示。</p>
<p>系统计划任务在/etc/crontab文件配置，以下缺省/etc/crontab文件的内容：</p>
<p><img src= "" data-lazy-src="1584755005591036168.png" alt="image.png"></p>
<p>系统计划任务的/etc/crontab文件中，<strong>可以设置环境变量，可以指定执行任务的用户。</strong>系统计划任务的执行时间的与用户计划任务的执行时间含义相同，不再描述。</p>
<p>示例：</p>
<p>Oracle数据库提供了sqlplus工具，执行sqlplus需要环境变量，如ORACLE_HOME、ORACLE_BASE等，如果采用系统计划任务执行一个SQL脚本，步骤如下：</p>
<p>1）准备/tmp/test.sql脚本文件，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">select to_char(sysdate,&#x27;yyyy-mm-dd hh24:mi:ss&#x27;) from dual;</span><br><span class="line">exit;</span><br></pre></td></tr></table></figure>
<p>2）在/etc/crontab文件中增加环境变量和任务，如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"># 设置Oracle的环境变量。</span><br><span class="line">ORACLE_BASE=/oracle/base</span><br><span class="line">ORACLE_HOME=/oracle/home</span><br><span class="line">ORACLE_SID=snorcl11g</span><br><span class="line">NLS_LANG=&#x27;Simplified Chinese_China.ZHS16GBK&#x27;</span><br><span class="line">LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib</span><br><span class="line"># 每分钟调用sqlplus执行/tmp/test.sql脚本，结果输出到/tmp/test.log文件。</span><br><span class="line">*/1 * * * * oracle /oracle/home/bin/sqlplus scott/tiger @/tmp/test.sql &gt; /tmp/test.log</span><br></pre></td></tr></table></figure>
<p>3）每隔一分钟查看/tmp/test.log文件的内容，如下：</p>
<p><img src= "" data-lazy-src="1584755071104093900.png" alt="image.png"></p>
<h2 id="四、如何在用户计划任务中执行需要环境变量的程序"><a href="#四、如何在用户计划任务中执行需要环境变量的程序" class="headerlink" title="四、如何在用户计划任务中执行需要环境变量的程序"></a>四、如何在用户计划任务中执行需要环境变量的程序</h2><p>用户的计划任务无法设置环境变量，那么如何在用户计划任务中执行需要环境变量的程序呢？我们可以这么做：</p>
<p>1）编写一个shell脚本；</p>
<p>2）在脚本中设置环境变量；</p>
<p>3）在脚本中执行需要环境变量的程序。</p>
<p>示例：</p>
<p>1）编写/tmp/test.sh脚本文件，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"># 设置系统环境变量。</span><br><span class="line">source /etc/profile</span><br><span class="line"># 设置oracle用户的环境变量。</span><br><span class="line">source /oracle/.bash_profile</span><br><span class="line"># 执行/tmp/test.sql脚本。</span><br><span class="line">/oracle/home/bin/sqlplus scott/tiger @/tmp/test.sql &gt; /tmp/test1.log</span><br></pre></td></tr></table></figure>
<p>2）准备/tmp/test.sql脚本文件，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">select to_char(sysdate,&#x27;yyyy-mm-dd hh24:mi:ss&#x27;) from dual;</span><br><span class="line">exit;</span><br></pre></td></tr></table></figure>
<p>3）设置oracle用户的计划任务文件，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># 每分钟执行一次/tmp/test.sh脚本。</span><br><span class="line">*/1 * * * *  /bin/sh /tmp/test.sh</span><br></pre></td></tr></table></figure>
<p>4）每隔一分钟查看/tmp/test1.log文件的内容，如下：</p>
<p><img src= "" data-lazy-src="1584755093680059786.png" alt="image.png"></p>
<h2 id="五、应用经验"><a href="#五、应用经验" class="headerlink" title="五、应用经验"></a>五、应用经验</h2><p>用户计划任务和系统计划任务没有本质的区别，都可以达到相同的目的。</p>
<p>在实际项目中我偏向用户的计划任务，虽然用户计划任务的crontab文件中不能设置环境变量，</p>
<p>可以通过脚本文件来解决，并且，脚本文件中编写指令比crontab文件更灵活。</p>
<h1 id="07、添加自定义系统服务"><a href="#07、添加自定义系统服务" class="headerlink" title="07、添加自定义系统服务"></a>07、添加自定义系统服务</h1><h2 id="一、编写Oracle数据库启动-重启-关闭的脚本"><a href="#一、编写Oracle数据库启动-重启-关闭的脚本" class="headerlink" title="一、编写Oracle数据库启动/重启/关闭的脚本"></a>一、编写Oracle数据库启动/重启/关闭的脚本</h2><h3 id="1、启动Oracle数据库的shell脚本"><a href="#1、启动Oracle数据库的shell脚本" class="headerlink" title="1、启动Oracle数据库的shell脚本"></a>1、启动Oracle数据库的shell脚本</h3><p>启动Oracle数据库的脚本为/oracle/home/bin/dbstart，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sqlplus / as sysdba &lt;&lt;EOF</span><br><span class="line">startup;</span><br><span class="line">EOF</span><br></pre></td></tr></table></figure>
<p>修改脚本的权限为可执行。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod +x /oracle/home/bin/dbstart</span><br></pre></td></tr></table></figure>
<h3 id="2、重启Oracle数据库的shell脚本"><a href="#2、重启Oracle数据库的shell脚本" class="headerlink" title="2、重启Oracle数据库的shell脚本"></a>2、重启Oracle数据库的shell脚本</h3><p>启动Oracle数据库的脚本为/oracle/home/bin/dbrestart，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">sqlplus / as sysdba &lt;&lt;EOF</span><br><span class="line">shutdown immediate;</span><br><span class="line">startup;</span><br><span class="line">EOF</span><br></pre></td></tr></table></figure>
<p>修改脚本的权限为可执行。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod +x /oracle/home/bin/dbrestart</span><br></pre></td></tr></table></figure>
<h3 id="3、关闭Oracle数据库的shell脚本"><a href="#3、关闭Oracle数据库的shell脚本" class="headerlink" title="3、关闭Oracle数据库的shell脚本"></a>3、关闭Oracle数据库的shell脚本</h3><p>启动Oracle数据库的脚本为/oracle/home/bin/dbshut，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sqlplus / as sysdba &lt;&lt;EOF</span><br><span class="line">shutdown immediate;</span><br><span class="line">EOF</span><br></pre></td></tr></table></figure>
<p>修改脚本的权限为可执行。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod +x /oracle/home/bin/dbshut</span><br></pre></td></tr></table></figure>
<h2 id="二、编写自定义服务的配置文件"><a href="#二、编写自定义服务的配置文件" class="headerlink" title="二、编写自定义服务的配置文件"></a>二、编写自定义服务的配置文件</h2><p>系统服务的启动/重启/停止由它的配置文件决定，本文把Oracle数据库的系统服务命名为oracle.service。</p>
<p>创建服务配置文件/usr/lib/systemd/system/oracle.service，内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line">Description=Oracle RDBMS</span><br><span class="line">After=network.target</span><br><span class="line"> </span><br><span class="line">[Service]</span><br><span class="line">Type=simple</span><br><span class="line">ExecStart=/usr/bin/su - oracle -c &quot;/oracle/home/bin/dbstart &gt;&gt; /tmp/oracle.log&quot;</span><br><span class="line">ExecReload=/usr/bin/su - oracle -c &quot;/oracle/home/bin/dbrestart &gt;&gt; /tmp/oracle.log&quot;</span><br><span class="line">ExecStop=/usr/bin/su - oracle -c &quot;/oracle/home/bin/dbshut &gt;&gt; /tmp/oracle.log&quot;</span><br><span class="line">RemainAfterExit=yes</span><br><span class="line"> </span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure>
<p>接下来介绍服务配置文件各部分的含义。</p>
<h3 id="1、Unit部分"><a href="#1、Unit部分" class="headerlink" title="1、Unit部分"></a>1、Unit部分</h3><p>Unit部分是启动顺序与依赖关系。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line">Description=Oracle RDBMS</span><br><span class="line">After=network.target</span><br></pre></td></tr></table></figure>
<blockquote>
<p>Description字段：给出当前服务的简单描述。</p>
<p>Documentation字段：给出文档位置。</p>
<p>After字段：表示本服务应该在某服务之后启动。</p>
<p>Before字段：表示本服务应该在某服务之前启动。</p>
<p>After和Before字段只涉及启动顺序，不涉及依赖关系。设置依赖关系，需要使用Wants字段和Requires字段。</p>
<p>Wants字段：表示本服务与某服务之间存在“依赖”系，如果被依赖的服务启动失败或停止运行，不影响本服务的继续运行。</p>
<p>Requires字段，表示本服务与某服务之间存在“强依赖”系，如果被依赖的服务启动失败或停止运行，本服务也必须退出。</p>
</blockquote>
<h3 id="2、Service部分"><a href="#2、Service部分" class="headerlink" title="2、Service部分"></a>2、Service部分</h3><p>Service部分定义如何启动/重启/停止服务。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">[Service]</span><br><span class="line">Type=simple</span><br><span class="line">ExecStart=/usr/bin/su - oracle -c &quot;/oracle/home/bin/dbstart &gt;&gt; /tmp/oracle.log&quot;</span><br><span class="line">ExecReload=/usr/bin/su - oracle -c &quot;/oracle/home/bin/dbrestart &gt;&gt; /tmp/oracle.log&quot;</span><br><span class="line">ExecStop=/usr/bin/su - oracle -c &quot;/oracle/home/bin/dbshut &gt;&gt; /tmp/oracle.log&quot;</span><br><span class="line">RemainAfterExit=yes</span><br></pre></td></tr></table></figure>
<p>1）启动类型（Type字段）</p>
<blockquote>
<p>Type字段定义启动类型。它可以设置的值如下。</p>
<p>simple（默认值）：ExecStart字段启动的进程为主进程。</p>
<p>forking：ExecStart字段将以fork()方式启动，此时父进程将会退出，子进程将成为主进程。</p>
<p>oneshot：类似于simple，但只执行一次，Systemd会等它执行完，才启动其他服务。</p>
<p>dbus：类似于simple，但会等待D-Bus信号后启动。</p>
<p>notify：类似于simple，启动结束后会发出通知信号，然后Systemd再启动其他服务。</p>
<p>idle：类似于simple，但是要等到其他任务都执行完，才会启动该服务。</p>
</blockquote>
<p>2）启动服务（ExecStart字段）</p>
<p>启动服务时执行的命令，可以是可执行程序、系统命令或shell脚本。</p>
<p>3）重启服务（ExecReload字段）</p>
<p>重启服务时执行的命令，可以是可执行程序、系统命令或shell脚本。</p>
<p>4）停止服务（ExecStop字段）</p>
<p>停止服务时执行的命令，可以是可执行程序、系统命令或shell脚本。</p>
<p>5）如果RemainAfterExit字段设为yes，表示进程退出以后，服务仍然保持执行。</p>
<p>6）服务配置文件还可以读取环境变量参数文件，我个人认为比较麻烦，没有必要，就不介绍了，设置程序的环境变量有很多种方法，可以在脚本中配置，也可以用“su –”的方法。</p>
<h3 id="3、Install部分"><a href="#3、Install部分" class="headerlink" title="3、Install部分"></a>3、Install部分</h3><p>Install部分定义如何安装这个配置文件，即怎样做到开机启动。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure>
<p>WantedBy字段：表示该服务所在的Target。</p>
<p>Target的含义是服务组，表示一组服务。WantedBy=multi-user.target指的是，oracle所在的Target是multi-user.target（多用户模式）。</p>
<p>这个设置非常重要，因为执行systemctl enable oracle.service命令时，oracle.service会被链接到/etc/systemd/system/multi-user.target.wants目录之中，实现开机启动的功能。</p>
<h3 id="4、重启行为"><a href="#4、重启行为" class="headerlink" title="4、重启行为"></a>4、重启行为</h3><p>Service部分还有一些字段，定义了重启行为。</p>
<p>1）KillMode字段</p>
<blockquote>
<p>KillMode字段定义Systemd如何停止sshd服务，可以设置的值如下：</p>
<p>control-group（默认值）：当前控制组里面的所有子进程，都会被杀掉。</p>
<p>process：只杀主进程。</p>
<p>mixed：主进程将收到SIGTERM信号，子进程收到SIGKILL信号。</p>
<p>none：没有进程会被杀掉，只是执行服务的stop命令。</p>
</blockquote>
<p>2）Restart字段</p>
<blockquote>
<p>Restart字段定义了服务程序退出后，Systemd的重启方式，可以设置的值如下：</p>
<p>no（默认值）：退出后不会重启。</p>
<p>on-success：只有正常退出时（退出状态码为0），才会重启。</p>
<p>on-failure：非正常退出时（退出状态码非0），包括被信号终止和超时，才会重启。</p>
<p>on-abnormal：只有被信号终止和超时，才会重启。</p>
<p>on-abort：只有在收到没有捕捉到的信号终止时，才会重启。</p>
<p>on-watchdog：超时退出，才会重启。</p>
<p>always：不管是什么退出原因，总是重启。</p>
</blockquote>
<p>3）RestartSec字段。</p>
<blockquote>
<p>RestartSec字段：表示Systemd重启服务之前，需要等待的秒数。</p>
</blockquote>
<h2 id="三、使用自定义的服务"><a href="#三、使用自定义的服务" class="headerlink" title="三、使用自定义的服务"></a>三、使用自定义的服务</h2><h3 id="1、重新加载服务配置文件"><a href="#1、重新加载服务配置文件" class="headerlink" title="1、重新加载服务配置文件"></a>1、重新加载服务配置文件</h3><p>每次修改了服务配置文件后，需要执行以下命令重新加载服务的配置文件。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl daemon-reload</span><br></pre></td></tr></table></figure>
<h3 id="2、启动-停止-启重oracle服务"><a href="#2、启动-停止-启重oracle服务" class="headerlink" title="2、启动/停止/启重oracle服务"></a>2、启动/停止/启重oracle服务</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">systemctl start oracle # 启动oracle服务。</span><br><span class="line"></span><br><span class="line">systemctl restart oracle # 重启oracle服务。</span><br><span class="line"></span><br><span class="line">systemctl stop oracle # 关闭oracle服务。</span><br></pre></td></tr></table></figure>
<h3 id="3、把oracle服务设置为开机-关机自启动-停止"><a href="#3、把oracle服务设置为开机-关机自启动-停止" class="headerlink" title="3、把oracle服务设置为开机/关机自启动/停止"></a>3、把oracle服务设置为开机/关机自启动/停止</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">systemctl is-enabled oracle # 查看oracle服务是否是开机自启动。</span><br><span class="line"></span><br><span class="line">systemctl enable oracle # 把oracle服务设置为开机自启动。</span><br></pre></td></tr></table></figure>
<h3 id="4、查看Oracle实例启动-停止的日志"><a href="#4、查看Oracle实例启动-停止的日志" class="headerlink" title="4、查看Oracle实例启动/停止的日志"></a>4、查看Oracle实例启动/停止的日志</h3><p>Oracle实例启动的日志在/tmp/oracle.log文件中。</p>
<p>注意，只有通过systemctl启动/关闭Oracle实例和监听才会写日志，手工执行脚本不写日志。</p>
<h1 id="08、配置IP地址和DNS"><a href="#08、配置IP地址和DNS" class="headerlink" title="08、配置IP地址和DNS"></a>08、配置IP地址和DNS</h1><h2 id="一、查看IP地址"><a href="#一、查看IP地址" class="headerlink" title="一、查看IP地址"></a>一、查看IP地址</h2><h3 id="1、ifconfig命令"><a href="#1、ifconfig命令" class="headerlink" title="1、ifconfig命令"></a>1、ifconfig命令</h3><p>ifconfig是Linux查看和配置网卡的命令，</p>
<p><img src= "" data-lazy-src="1585192968936070782.png" alt="image.png"></p>
<p>上图中，我们重点关注五方面信息：</p>
<blockquote>
<p>1）网卡名：即网卡设备名，lo是本机（全称loopback，是回环地址，经常被分配到127.0.0.1地址上，用于本机通信，经过内核处理后直接返回，不会在任何网络中出现）；eth0是真实的网卡，如果服务器有多个网卡，网卡命名将是eth0、eth1、eth2、……。注意：真实网卡的名称不一定是eth打头，还可以是no（由主板bios内置的网卡）、ens（代表有主板bios内置的PCI-E网卡）、enp2s（PCI-E独立网卡）等，后面的编号也不一定从0开始。</p>
<p>2）IP地址：inet后的内容是IP地址，我们现在常说的IP地址是指IPV4，IPV6的地址是inet6之后的内容，暂时不关注。</p>
<p>3）子网掩码：netmask后的内容是子网掩码。</p>
<p>4）网卡状态：</p>
<UP,BROADCAST,RUNNING,MULTICAST>

<p> UP：网卡处于启动状态。</p>
<p>BROADCAST：网卡有广播地址，可以发生广播包。</p>
<p>MULTICAST：网卡可以发生多播包。</p>
<p>LOWER_UP：L1是启动的，即网线是插着的。</p>
<p>5）MAC地址：MAC地址是生产厂家定的，每个网卡拥有的一个地址，相当于设备的序列号。</p>
</blockquote>
<h3 id="2、ip-addr命令"><a href="#2、ip-addr命令" class="headerlink" title="2、ip addr命令"></a>2、ip addr命令</h3><p><img src= "" data-lazy-src="1585192991129029849.png" alt="image.png"></p>
<p>ip addr命令显示的内容和ifconfig差不多，就不解释了。</p>
<p>注意：ip addr命令把IP地址和子网掩码在一起显示，如：172.16.0.7/20。</p>
<h2 id="二、配置网卡"><a href="#二、配置网卡" class="headerlink" title="二、配置网卡"></a>二、配置网卡</h2><p>每一个网卡都有一个配置文件，存放在/etc/sysconfig/network-scripts目录中，文件名是ifcfg-网卡，网卡eth0的配置文件是ifcfg-eth0，如下：</p>
<p><img src= "" data-lazy-src="1585193008624091903.png" alt="image.png"></p>
<h3 id="1、动态IP地址"><a href="#1、动态IP地址" class="headerlink" title="1、动态IP地址"></a>1、动态IP地址</h3><p>如果采用的是动态分配IP的方法，ifcfg-eth0的配置如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">TYPE=Ethernet  # 网卡类型。</span><br><span class="line">PROXY_METHOD=none  # 代理模式。</span><br><span class="line">BROWSER_ONLY=no  # 只是浏览器。</span><br><span class="line">BOOTPROTO=dhcp  # dhcp-动态分配，static-静态分配（重要）。</span><br><span class="line">DEFROUTE=yes  # 启动默认路由。</span><br><span class="line">IPV4_FAILURE_FATAL=no  # 不启用IPV4错误检测功能。</span><br><span class="line">IPV6INIT=yes  # 启用IPV6协议。</span><br><span class="line">IPV6_AUTOCONF=yes  # 自动配置IPV6地址。</span><br><span class="line">IPV6_DEFROUTE=yes  # 用IPV6默认路由。</span><br><span class="line">IPV6_FAILURE_FATAL=no  # 不启用IPV6错误检测功能。</span><br><span class="line">IPV6_ADDR_GEN_MODE=stable-privacy  # IPV6地址生成模型。</span><br><span class="line">NAME=eth0  # 网卡物理设备名称（重要）。</span><br><span class="line">UUID=63749b32-6852-4535-96a9-58d24732771d</span><br><span class="line">DEVICE=eth0  # 网卡设备名称, 必须和NAME值相同（重要）。</span><br><span class="line">ONBOOT=yes  # 是否开机引导。</span><br></pre></td></tr></table></figure>
<p>以上参数是系统缺省的，只需要关注NOBOOT参数就可以了。</p>
<h3 id="2、静态IP地址"><a href="#2、静态IP地址" class="headerlink" title="2、静态IP地址"></a>2、静态IP地址</h3><p>如果采用的是静态设置IP，ifcfg-eth0的配置如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">TYPE=Ethernet  # 网卡类型。</span><br><span class="line">PROXY_METHOD=none  # 代理模式。</span><br><span class="line">BROWSER_ONLY=no  # 只是浏览器。</span><br><span class="line">BOOTPROTO=static  # dhcp-动态分配，static-静态分配（重要）。</span><br><span class="line">DEFROUTE=yes  # 启动默认路由。</span><br><span class="line">IPV4_FAILURE_FATAL=no  # 不启用IPV4错误检测功能。</span><br><span class="line">IPV6INIT=yes  # 启用IPV6协议。</span><br><span class="line">IPV6_AUTOCONF=yes  # 自动配置IPV6地址。</span><br><span class="line">IPV6_DEFROUTE=yes  # 用IPV6默认路由。</span><br><span class="line">IPV6_FAILURE_FATAL=no  # 不启用IPV6错误检测功能。</span><br><span class="line">IPV6_ADDR_GEN_MODE=stable-privacy  # IPV6地址生成模型。</span><br><span class="line">NAME=eth0  # 网卡物理设备名称（重要，不必修改）。</span><br><span class="line">UUID=63749b32-6852-4535-96a9-58d24732771d</span><br><span class="line">DEVICE=eth0  # 网卡设备名称, 必须和NAME值相同（重要，不必修改）。</span><br><span class="line">ONBOOT=yes  # 是否开机引导。</span><br><span class="line"> </span><br><span class="line">DNS1=114.114.114.114  # 第1个DSN服务器的IP地址（重要）。</span><br><span class="line">DNS2=1.2.4.8  # 第2个DSN服务器的IP地址（重要）。</span><br><span class="line"> </span><br><span class="line">IPADDR=192.168.126.128  # IP地址（重要）。</span><br><span class="line">NETMARSK=255.255.255.0  # 子网掩码（重要）。</span><br><span class="line">GATEWAY=192.168.126.2  # 网关（重要）。</span><br></pre></td></tr></table></figure>
<h3 id="3、重启网卡"><a href="#3、重启网卡" class="headerlink" title="3、重启网卡"></a>3、重启网卡</h3><p>采用root用户，执行以下命令重启网络服务：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl restart network</span><br></pre></td></tr></table></figure>
<h2 id="三、注意事项"><a href="#三、注意事项" class="headerlink" title="三、注意事项"></a>三、注意事项</h2><p><strong>1）如果在VMWare虚拟机中，CentOS7最小安装的网卡设备名缺省是ens33，配置文件名是ifcfg-ens33。</strong></p>
<p><strong>2）CentOS7最小化安装缺省是不启动网卡的，需要手工修改网卡配置文件，设置**</strong>ONBOOT=yes<strong>**。</strong></p>
<p><strong>3）DNS服务器的参数可以在网卡的配置文件中设置，也可以在/etc/resolv.conf文件中设置，如下：</strong></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># Generated by NetworkManager</span><br><span class="line">nameserver 114.114.114.114</span><br><span class="line">nameserver 1.2.4.8</span><br></pre></td></tr></table></figure>
<p><strong>4）如果在VMWare虚拟机中，把CentOS7修改为静态IP后，可能无法上网，处理方法见下一章节。</strong></p>
<h2 id="四、本地虚拟机设置静态IP后不能上网的解决方法"><a href="#四、本地虚拟机设置静态IP后不能上网的解决方法" class="headerlink" title="四、本地虚拟机设置静态IP后不能上网的解决方法"></a>四、本地虚拟机设置静态IP后不能上网的解决方法</h2><p>在VMWare中安装的本地虚拟机CentOS7操作系统，动态IP地址会经常变化，设置成静态IP地址后，本地局域网可以互相访问，但CentOS7系统无法访问互联网，按以下步骤解决这个问题。</p>
<h3 id="1、以系统管理员打开VMWare"><a href="#1、以系统管理员打开VMWare" class="headerlink" title="1、以系统管理员打开VMWare"></a>1、以系统管理员打开VMWare</h3><p><img src= "" data-lazy-src="1585193080754040570.png" alt="image.png"></p>
<h3 id="2、选择虚拟网络编辑器菜单"><a href="#2、选择虚拟网络编辑器菜单" class="headerlink" title="2、选择虚拟网络编辑器菜单"></a>2、选择虚拟网络编辑器菜单</h3><p><img src= "" data-lazy-src="1585193095711093881.png" alt="image.png"></p>
<h3 id="3、选择VMnet8这一行"><a href="#3、选择VMnet8这一行" class="headerlink" title="3、选择VMnet8这一行"></a>3、选择VMnet8这一行</h3><p><img src= "" data-lazy-src="1585193109891085944.png" alt="image.png"></p>
<h3 id="4、还原VMnet8的默认设置"><a href="#4、还原VMnet8的默认设置" class="headerlink" title="4、还原VMnet8的默认设置"></a>4、还原VMnet8的默认设置</h3><p><img src= "" data-lazy-src="1585193124414064751.png" alt="image.png"></p>
<h3 id="5、修改VMnet8的参数"><a href="#5、修改VMnet8的参数" class="headerlink" title="5、修改VMnet8的参数"></a>5、修改VMnet8的参数</h3><p><img src= "" data-lazy-src="1585193141092013557.png" alt="image.png"></p>
<p><strong>虚拟机子网IP地址段和子网掩码由您自己来定，如果你不熟练，就按上图中的内容来设置也没有问题。</strong></p>
<h3 id="6、NAT设置"><a href="#6、NAT设置" class="headerlink" title="6、NAT设置"></a>6、NAT设置</h3><p><img src= "" data-lazy-src="1585193171414008341.png" alt="image.png"></p>
<p><img src= "" data-lazy-src="1585193192505082529.png" alt="image.png"></p>
<h3 id="7、保存设置"><a href="#7、保存设置" class="headerlink" title="7、保存设置"></a>7、保存设置</h3><p><img src= "" data-lazy-src="1585193206863040602.png" alt="image.png"></p>
<h3 id="8、确认虚拟机为NAT模式"><a href="#8、确认虚拟机为NAT模式" class="headerlink" title="8、确认虚拟机为NAT模式"></a>8、确认虚拟机为NAT模式</h3><p><img src= "" data-lazy-src="1585193221840003623.png" alt="image.png"></p>
<h3 id="9、启动虚拟机CentOS7"><a href="#9、启动虚拟机CentOS7" class="headerlink" title="9、启动虚拟机CentOS7"></a>9、启动虚拟机CentOS7</h3><h3 id="10、设置CentOS7的不静态IP地址"><a href="#10、设置CentOS7的不静态IP地址" class="headerlink" title="10、设置CentOS7的不静态IP地址"></a>10、设置CentOS7的不静态IP地址</h3><p>修改虚拟机网卡配置文件，如/etc/sysconfig/network-scripts/ifcfg-ens33，注意，文件名不一定是ifcfg-ens33，根据您的实际情况决定。</p>
<p>1）修改BOOTPROTO参数，把地址协议改为静态IP方式。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">BOOTPROTO=static  # dhcp-动态分配，static-静态分配（重要）。</span><br></pre></td></tr></table></figure>
<p>2）修改ONBOOT参数，把开机启动选项ONBOOT设置为yes。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ONBOOT=yes  # 是否开机引导。</span><br></pre></td></tr></table></figure>
<p>3）设置DSN服务器的IP，添加以下内容。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">DNS1=114.114.114.114  # 第1个DSN服务器的IP地址。</span><br><span class="line">DNS2=1.2.4.8  # 第2个DSN服务器的IP地址。</span><br></pre></td></tr></table></figure>
<p>4）设置CentOS7的IP地址、子网掩码和网关参数，添加以下内容。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">IPADDR=192.168.226.128  # IP地址（重要）。</span><br><span class="line">NETMARSK=255.255.255.0  # 子网掩码（重要）。</span><br><span class="line">GATEWAY=192.168.226.2   # 网关（重要）。</span><br></pre></td></tr></table></figure>
<h3 id="11、重启CentOS7的网络服务"><a href="#11、重启CentOS7的网络服务" class="headerlink" title="11、重启CentOS7的网络服务"></a>11、重启CentOS7的网络服务</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl restart network</span><br></pre></td></tr></table></figure>
<h3 id="12、测试效果"><a href="#12、测试效果" class="headerlink" title="12、测试效果"></a>12、测试效果</h3><p>ping一下百度。</p>
<p><img src= "" data-lazy-src="1585193479977068352.png" alt="image.png"></p>
<p>ok。</p>
<h3 id="13、注意事项"><a href="#13、注意事项" class="headerlink" title="13、注意事项"></a>13、注意事项</h3><p>如果您对网络知识不熟悉，或对虚拟机不熟悉，建议按本文章依葫芦画瓢，照抄参数。</p>
<h1 id="09、开机启动程序"><a href="#09、开机启动程序" class="headerlink" title="09、开机启动程序"></a>09、开机启动程序</h1><p>在CentOS7中，实现开机启动程序主要有两种方法：</p>
<p>1）把要启动的程序配置成自定义的系统服务，该方法我已经介绍过，请阅读：<a target="_blank" rel="noopener" href="http://www.freecplus.net/web/list.jsp?typeId=41a73911ba7b45f4931a344387a6a794&amp;navId=056c325857234b9bb0db62329af213ef">CentOS7添加自定义系统服务</a>。</p>
<p>2）在/etc/rc.local脚本文件中编写启动程序的脚本，本文将详细介绍这种方法。</p>
<h2 id="1、-etc-rc-local是-etc-rc-d-rc-local的软链接"><a href="#1、-etc-rc-local是-etc-rc-d-rc-local的软链接" class="headerlink" title="1、/etc/rc.local是/etc/rc.d/rc.local的软链接"></a>1、/etc/rc.local是/etc/rc.d/rc.local的软链接</h2><p>执行ls -l /etc/rc.local看看。</p>
<p><img src= "" data-lazy-src="1585355421774089427.png" alt="image.png"></p>
<p>/etc/rc.local是/etc/rc.d/rc.local文件的软链接，也就是说他们是同一个文件。</p>
<h2 id="2、rc-local文件的原始内容"><a href="#2、rc-local文件的原始内容" class="headerlink" title="2、rc.local文件的原始内容"></a>2、rc.local文件的原始内容</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">#!/bin/bash</span><br><span class="line"># THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES</span><br><span class="line">#</span><br><span class="line"># It is highly advisable to create own systemd services or udev rules</span><br><span class="line"># to run scripts during boot instead of using this file.</span><br><span class="line">#</span><br><span class="line"># In contrast to previous versions due to parallel execution during boot</span><br><span class="line"># this script will NOT be run after all other services.</span><br><span class="line">#</span><br><span class="line"># Please note that you must run &#x27;chmod +x /etc/rc.d/rc.local&#x27; to ensure</span><br><span class="line"># that this script will be executed during boot.</span><br><span class="line">#</span><br><span class="line">touch /var/lock/subsys/local</span><br></pre></td></tr></table></figure>
<p>中文意思如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># 添加此文件是为了兼容。</span><br><span class="line"># 强烈建议创建自己的systemd服务或udev规则，以便在引导期间运行脚本，而不是使用此文件。</span><br><span class="line"># 与以前版本不同，由于在引导期间并行执行，此脚本不会在所有其他服务之后运行。</span><br><span class="line"># 请注意，必须运行&#x27;chmod  +x  /etc/rc.d/rc.local&#x27;，以确保在引导期间执行此脚本。</span><br></pre></td></tr></table></figure>
<p>明白了吧。</p>
<p>虽然Linux强烈建议采用自定义的系统服务实现开机自启动程序，不过我认为在rc.local中配置开机启动程序也是一个不错的方法，因为rc.local的配置更简单明了，所以仍被广泛的使用。</p>
<h2 id="3、rc-local文件的配置"><a href="#3、rc-local文件的配置" class="headerlink" title="3、rc.local文件的配置"></a>3、rc.local文件的配置</h2><p>rc.local本质上是一个shell脚本文件，可以把启动时需要执行的命令写在里面，启动时将按顺序执行。</p>
<p>接下来我们来测试它。</p>
<p>1）在rc.local中添加以下脚本。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">/usr/bin/date &gt;&gt; /tmp/date1.log  # 把当前时间追加写入到/tmp/date1.log中。</span><br><span class="line">/usr/bin/sleep 10 # 睡眠10秒。</span><br><span class="line">/usr/bin/date &gt;&gt; /tmp/date2.log  # 把当前时间追加写入到/tmp/date2.log中。</span><br></pre></td></tr></table></figure>
<p>2）修改/etc/rc.d/rc.local的可执行权限。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod +x /etc/rc.d/rc.local</span><br></pre></td></tr></table></figure>
<p>3）重启服务器。</p>
<p>4）查看日志文件/tmp/date1.log和/tmp/date2.log的内容。</p>
<p><img src= "" data-lazy-src="1585355492304067973.png" alt="image.png"></p>
<h2 id="4、应用经验"><a href="#4、应用经验" class="headerlink" title="4、应用经验"></a>4、应用经验</h2><p>1）rc.local脚本在操作系统启动时只执行一次。</p>
<p>2）环境变量的问题。</p>
<p>在rc.local脚本中执行程序时是没有环境变量的，如果您执行的程序需要环境变量，可以在脚本中设置环境变量，也可以用su切换用户来执行，例如：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">su - oracle -c &quot;sqlplus scott/tiger @/tmp/test.sql&quot;</span><br></pre></td></tr></table></figure>
<p>以上命令的含义就是以oracle用户登录再执行sqlplus命令。</p>
<p>3）不要让rc.local挂起。</p>
<p>rc.local是一个脚本，是按顺序执行的，执行完一个程序后才会执行下一个程序，如果某程序不是后台程序，就应该加&amp;让程序运行在后台，否则rc.local会挂起。</p>
<p>可以用以下脚本来测试，rc.local的内容如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">/usr/bin/date &gt;&gt; /tmp/date1.log  # 把当前时间追加写入到/tmp/date1.log中。</span><br><span class="line">/usr/bin/sleep 100 # 睡眠100秒。</span><br><span class="line">/usr/bin/date &gt;&gt; /tmp/date2.log  # 把当前时间追加写入到/tmp/date2.log中。</span><br></pre></td></tr></table></figure>
<p>如果采用了以上脚本，Linux系统在启动完成100后，才会出现以下的登录界面。</p>
<p><img src= "" data-lazy-src="1585355547163050280.png" alt="image.png"></p>
</article><div class="tag_share"><div class="post-meta__tag-list"><a class="post-meta__tags" href="/tags/Linux/">Linux</a></div><div class="post_share"></div></div><nav class="pagination-post" id="pagination"><div class="prev-post pull-left"><a href="/blog/utils/canvas%20%E9%A1%B5%E9%9D%A2%E6%B0%B4%E5%8D%B0/"><img class="prev-cover" src= "" data-lazy-src="/images/canvas.jpeg" onerror="onerror=null;src='/img/404.jpg'" alt="cover of previous post"><div class="pagination-info"><div class="label">上一篇</div><div class="prev_info">canvas 页面水印</div></div></a></div><div class="next-post pull-right"><a href="/blog/linux/centos7%20%E5%9B%BA%E5%AE%9Aip%E5%9C%B0%E5%9D%80/"><img class="next-cover" src= "" data-lazy-src="/images/centos.png" onerror="onerror=null;src='/img/404.jpg'" alt="cover of next post"><div class="pagination-info"><div class="label">下一篇</div><div class="next_info">centos7 固定ip地址</div></div></a></div></nav><div class="relatedPosts"><div class="headline"><i class="fas fa-thumbs-up fa-fw"></i><span> 相关推荐</span></div><div class="relatedPosts-list"><div><a href="/blog/linux/100 Redis Linux环境安装/" title="Redis Linux 环境安装"><img class="cover" src= "" data-lazy-src="/images/redis.jpeg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2023-11-21</div><div class="title">Redis Linux 环境安装</div></div></a></div><div><a href="/blog/linux/centos7 固定ip地址/" title="centos7 固定ip地址"><img class="cover" src= "" data-lazy-src="/images/centos.png" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2021-09-16</div><div class="title">centos7 固定ip地址</div></div></a></div><div><a href="/blog/linux/Linux常用软件安装/" title="Linux常用软件安装"><img class="cover" src= "" data-lazy-src="/images/linux.png" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2021-09-16</div><div class="title">Linux常用软件安装</div></div></a></div><div><a href="/blog/linux/vim常用操作/" title="vim常用操作"><img class="cover" src= "" data-lazy-src="/images/vim.jpeg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2024-04-21</div><div class="title">vim常用操作</div></div></a></div></div></div></div><div class="aside-content" id="aside-content"><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span></div><div class="announcement_content">一切解释权归本咸鱼所有</div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#00%E3%80%81%E5%8F%82%E8%80%83%E5%9C%B0%E5%9D%80"><span class="toc-number">1.</span> <span class="toc-text">00、参考地址</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#01%E3%80%81%E5%9F%BA%E7%A1%80%E6%93%8D%E4%BD%9C"><span class="toc-number">2.</span> <span class="toc-text">01、基础操作</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1%E3%80%81%E5%BC%80%E6%9C%BA"><span class="toc-number">2.1.</span> <span class="toc-text">1、开机</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2%E3%80%81%E9%87%8D%E5%90%AF%E5%92%8C%E5%85%B3%E6%9C%BA"><span class="toc-number">2.2.</span> <span class="toc-text">2、重启和关机</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#3%E3%80%81%E6%B8%85%E5%B1%8F"><span class="toc-number">2.3.</span> <span class="toc-text">3、清屏</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#4%E3%80%81%E6%9F%A5%E7%9C%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84ip%E5%9C%B0%E5%9D%80"><span class="toc-number">2.4.</span> <span class="toc-text">4、查看服务器的ip地址</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#5%E3%80%81%E6%97%B6%E9%97%B4%E6%93%8D%E4%BD%9C"><span class="toc-number">2.5.</span> <span class="toc-text">5、时间操作</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#6%E3%80%81%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6"><span class="toc-number">2.6.</span> <span class="toc-text">6、目录和文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#7%E3%80%81%E6%9F%A5%E7%9C%8B%E5%BD%93%E5%89%8D%E5%B7%A5%E4%BD%9C%E7%9B%AE%E5%BD%95"><span class="toc-number">2.7.</span> <span class="toc-text">7、查看当前工作目录</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#8%E3%80%81%E6%94%B9%E5%8F%98%E5%BD%93%E5%89%8D%E5%B7%A5%E4%BD%9C%E7%9B%AE%E5%BD%95"><span class="toc-number">2.8.</span> <span class="toc-text">8、改变当前工作目录</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#9%E3%80%81%E5%88%97%E5%87%BA%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6%E4%BF%A1%E6%81%AF"><span class="toc-number">2.9.</span> <span class="toc-text">9、列出目录和文件信息</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#10%E3%80%81%E5%88%9B%E5%BB%BA%E7%9B%AE%E5%BD%95"><span class="toc-number">2.10.</span> <span class="toc-text">10、创建目录</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#11%E3%80%81%E5%88%A0%E9%99%A4%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6"><span class="toc-number">2.11.</span> <span class="toc-text">11、删除目录和文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#12%E3%80%81%E7%A7%BB%E5%8A%A8%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6"><span class="toc-number">2.12.</span> <span class="toc-text">12、移动目录和文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#13%E3%80%81%E5%A4%8D%E5%88%B6%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6"><span class="toc-number">2.13.</span> <span class="toc-text">13、复制目录和文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#14%E3%80%81%E6%89%93%E5%8C%85%E5%8E%8B%E7%BC%A9%E5%92%8C%E8%A7%A3%E5%8C%85%E8%A7%A3%E5%8E%8B"><span class="toc-number">2.14.</span> <span class="toc-text">14、打包压缩和解包解压</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%89%93%E5%8C%85%E5%8E%8B%E7%BC%A9%E7%9A%84%E8%AF%AD%E6%B3%95%EF%BC%9A"><span class="toc-number">2.14.1.</span> <span class="toc-text">打包压缩的语法：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%A7%A3%E5%8C%85%E8%A7%A3%E5%8E%8B%E7%9A%84%E8%AF%AD%E6%B3%95%EF%BC%9A"><span class="toc-number">2.14.2.</span> <span class="toc-text">解包解压的语法：</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#15%E3%80%81%E5%88%A4%E6%96%AD%E7%BD%91%E7%BB%9C%E6%98%AF%E5%90%A6%E8%BF%9E%E9%80%9A"><span class="toc-number">2.15.</span> <span class="toc-text">15、判断网络是否连通</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#16%E3%80%81%E6%98%BE%E7%A4%BA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%85%E5%AE%B9"><span class="toc-number">2.16.</span> <span class="toc-text">16、显示文本文件的内容</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#17%E3%80%81%E7%BB%9F%E8%AE%A1%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E7%9A%84%E8%A1%8C%E6%95%B0%E3%80%81%E5%8D%95%E8%AF%8D%E6%95%B0%E5%92%8C%E5%AD%97%E8%8A%82%E6%95%B0"><span class="toc-number">2.17.</span> <span class="toc-text">17、统计文本文件的行数、单词数和字节数</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#18%E3%80%81%E6%90%9C%E7%B4%A2%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%86%85%E5%AE%B9"><span class="toc-number">2.18.</span> <span class="toc-text">18、搜索文件中的内容</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#19%E3%80%81%E6%90%9C%E7%B4%A2%E6%96%87%E4%BB%B6"><span class="toc-number">2.19.</span> <span class="toc-text">19、搜索文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#20%E3%80%81%E5%A2%9E%E5%8A%A0-%E5%88%A0%E9%99%A4%E7%94%A8%E6%88%B7%E7%BB%84"><span class="toc-number">2.20.</span> <span class="toc-text">20、增加&#x2F;删除用户组</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%EF%BC%89%E5%A2%9E%E5%8A%A0%E7%94%A8%E6%88%B7%E7%BB%84"><span class="toc-number">2.20.1.</span> <span class="toc-text">1）增加用户组</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%EF%BC%89%E5%88%A0%E9%99%A4%E7%94%A8%E6%88%B7%E7%BB%84"><span class="toc-number">2.20.2.</span> <span class="toc-text">2）删除用户组</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#21%E3%80%81%E5%A2%9E%E5%8A%A0-%E5%88%A0%E9%99%A4%E7%94%A8%E6%88%B7"><span class="toc-number">2.21.</span> <span class="toc-text">21、增加&#x2F;删除用户</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#22%E3%80%81%E4%BF%AE%E6%94%B9%E7%94%A8%E6%88%B7%E7%9A%84%E5%AF%86%E7%A0%81"><span class="toc-number">2.22.</span> <span class="toc-text">22、修改用户的密码</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#23%E3%80%81%E5%88%87%E6%8D%A2%E7%94%A8%E6%88%B7"><span class="toc-number">2.23.</span> <span class="toc-text">23、切换用户</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#24%E3%80%81%E4%BF%AE%E6%94%B9%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6%E7%9A%84%E4%B8%BB%E4%BA%BA%E5%92%8C%E7%BB%84"><span class="toc-number">2.24.</span> <span class="toc-text">24、修改目录和文件的主人和组</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#25%E3%80%81%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%BB%9F%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4"><span class="toc-number">2.25.</span> <span class="toc-text">25、查看系统磁盘空间</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#02%E3%80%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.</span> <span class="toc-text">02、环境变量</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E3%80%81%E4%BB%80%E4%B9%88%E6%98%AF%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.1.</span> <span class="toc-text">一、什么是环境变量</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E5%90%AB%E4%B9%89"><span class="toc-number">3.1.1.</span> <span class="toc-text">1、环境变量的含义</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E5%88%86%E7%B1%BB"><span class="toc-number">3.1.2.</span> <span class="toc-text">2、环境变量的分类</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81Linux%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.1.3.</span> <span class="toc-text">3、Linux环境变量</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%8C%E3%80%81%E5%B8%B8%E7%94%A8%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.2.</span> <span class="toc-text">二、常用的环境变量</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E6%9F%A5%E7%9C%8B%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.2.1.</span> <span class="toc-text">1、查看环境变量</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#1%EF%BC%89env%E5%91%BD%E4%BB%A4"><span class="toc-number">3.2.1.1.</span> <span class="toc-text">1）env命令</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E5%B8%B8%E7%94%A8%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.2.2.</span> <span class="toc-text">2、常用的环境变量</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%89%E3%80%81%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%E9%87%8F"><span class="toc-number">3.3.</span> <span class="toc-text">三、设置环境量</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.3.1.</span> <span class="toc-text">1、系统环境变量</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E7%94%A8%E6%88%B7%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.3.2.</span> <span class="toc-text">2、用户环境变量</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%84%9A%E6%9C%AC%E6%96%87%E4%BB%B6%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F"><span class="toc-number">3.3.3.</span> <span class="toc-text">3、环境变量脚本文件的执行顺序</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9B%9B%E3%80%81%E9%87%8D%E8%A6%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E8%AF%A6%E8%A7%A3"><span class="toc-number">3.4.</span> <span class="toc-text">四、重要环境变量的详解</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81PATH%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.4.1.</span> <span class="toc-text">1、PATH环境变量</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81LANG%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.4.2.</span> <span class="toc-text">2、LANG环境变量</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81LD-LIBRARY-PATH%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-number">3.4.3.</span> <span class="toc-text">3、LD_LIBRARY_PATH环境变量</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4%E3%80%81CLASSPATH"><span class="toc-number">3.4.4.</span> <span class="toc-text">4、CLASSPATH</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%94%E3%80%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E7%94%9F%E6%95%88"><span class="toc-number">3.5.</span> <span class="toc-text">五、环境变量的生效</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%AD%E3%80%81%E5%BA%94%E7%94%A8%E7%BB%8F%E9%AA%8C"><span class="toc-number">3.6.</span> <span class="toc-text">六、应用经验</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#03%E3%80%81%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6"><span class="toc-number">4.</span> <span class="toc-text">03、安装软件</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E3%80%81rpm%E5%AE%89%E8%A3%85"><span class="toc-number">4.1.</span> <span class="toc-text">一、rpm安装</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%B7%B2%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85"><span class="toc-number">4.1.1.</span> <span class="toc-text">1、查看系统中已安装的软件包</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E6%9F%A5%E7%9C%8B%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%9A%84%E5%AE%89%E8%A3%85%E6%96%87%E4%BB%B6"><span class="toc-number">4.1.2.</span> <span class="toc-text">2、查看软件包的安装文件</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E5%AE%89%E8%A3%85-%E5%8D%87%E7%BA%A7%E8%BD%AF%E4%BB%B6%E5%8C%85"><span class="toc-number">4.1.3.</span> <span class="toc-text">3、安装&#x2F;升级软件包</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4%E3%80%81%E5%88%A0%E9%99%A4%E8%BD%AF%E4%BB%B6%E5%8C%85"><span class="toc-number">4.1.4.</span> <span class="toc-text">4、删除软件包</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%8C%E3%80%81yum%E5%AE%89%E8%A3%85"><span class="toc-number">4.2.</span> <span class="toc-text">二、yum安装</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81yum%E7%9A%84%E8%AF%AD%E6%B3%95"><span class="toc-number">4.2.1.</span> <span class="toc-text">1、yum的语法</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81yum%E7%9A%84%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4"><span class="toc-number">4.2.2.</span> <span class="toc-text">2、yum的常用命令</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E7%A4%BA%E4%BE%8B"><span class="toc-number">4.2.3.</span> <span class="toc-text">3、示例</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%89%E3%80%81%E5%BA%94%E7%94%A8%E7%BB%8F%E9%AA%8C"><span class="toc-number">4.3.</span> <span class="toc-text">三、应用经验</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#04%E3%80%81%E7%B3%BB%E7%BB%9F%E6%9C%8D%E5%8A%A1%E7%AE%A1%E7%90%86"><span class="toc-number">5.</span> <span class="toc-text">04、系统服务管理</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E3%80%81systemctl%E4%BB%8B%E7%BB%8D"><span class="toc-number">5.1.</span> <span class="toc-text">一、systemctl介绍</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%8C%E3%80%81systemctl%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4"><span class="toc-number">5.2.</span> <span class="toc-text">二、systemctl常用命令</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1"><span class="toc-number">5.2.1.</span> <span class="toc-text">1、启动服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E5%81%9C%E6%AD%A2%E6%9C%8D%E5%8A%A1"><span class="toc-number">5.2.2.</span> <span class="toc-text">2、停止服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E9%87%8D%E5%90%AF%E6%9C%8D%E5%8A%A1"><span class="toc-number">5.2.3.</span> <span class="toc-text">3、重启服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4%E3%80%81%E6%9F%A5%E7%9C%8B%E6%9C%8D%E5%8A%A1%E6%98%AF%E5%90%A6%E5%B7%B2%E5%90%AF%E5%8A%A8"><span class="toc-number">5.2.4.</span> <span class="toc-text">4、查看服务是否已启动</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5%E3%80%81%E6%9F%A5%E7%9C%8B%E6%9C%8D%E5%8A%A1%E7%9A%84%E7%8A%B6%E6%80%81"><span class="toc-number">5.2.5.</span> <span class="toc-text">5、查看服务的状态</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6%E3%80%81%E5%90%AF%E7%94%A8%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1"><span class="toc-number">5.2.6.</span> <span class="toc-text">6、启用开机自启动服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7%E3%80%81%E5%81%9C%E7%94%A8%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1"><span class="toc-number">5.2.7.</span> <span class="toc-text">7、停用开机自启动服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#8%E3%80%81%E6%9F%A5%E7%9C%8B%E6%9C%8D%E5%8A%A1%E6%98%AF%E5%90%A6%E4%B8%BA%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8"><span class="toc-number">5.2.8.</span> <span class="toc-text">8、查看服务是否为开机自启动</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#9%E3%80%81%E5%8F%AA%E9%87%8D%E5%90%AF%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E4%B8%AD%E7%9A%84%E6%9C%8D%E5%8A%A1"><span class="toc-number">5.2.9.</span> <span class="toc-text">9、只重启正在运行中的服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#10%E3%80%81%E6%98%BE%E7%A4%BA%E6%89%80%E6%9C%89%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%8A%B6%E6%80%81"><span class="toc-number">5.2.10.</span> <span class="toc-text">10、显示所有的服务状态</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#11%E3%80%81%E6%9F%A5%E7%9C%8B%E5%90%AF%E5%8A%A8%E6%88%90%E5%8A%9F%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%88%97%E8%A1%A8"><span class="toc-number">5.2.11.</span> <span class="toc-text">11、查看启动成功的服务列表</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#12%E3%80%81%E6%9F%A5%E7%9C%8B%E5%90%AF%E5%8A%A8%E5%A4%B1%E8%B4%A5%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%88%97%E8%A1%A8"><span class="toc-number">5.2.12.</span> <span class="toc-text">12、查看启动失败的服务列表</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#13%E3%80%81%E6%9F%A5%E7%9C%8B%E6%89%80%E6%9C%89%E6%9C%8D%E5%8A%A1%E7%9A%84%E7%8A%B6%E6%80%81"><span class="toc-number">5.2.13.</span> <span class="toc-text">13、查看所有服务的状态</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#14%E3%80%81%E5%88%97%E5%87%BA%E5%9C%A8%E6%8C%87%E5%AE%9A%E6%9C%8D%E5%8A%A1%E4%B9%8B%E5%89%8D%E5%90%AF%E5%8A%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%EF%BC%88%E4%BE%9D%E8%B5%96%EF%BC%89"><span class="toc-number">5.2.14.</span> <span class="toc-text">14、列出在指定服务之前启动的服务（依赖）</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#15%E3%80%81%E5%88%97%E5%87%BA%E5%9C%A8%E6%8C%87%E5%AE%9A%E6%9C%8D%E5%8A%A1%E4%B9%8B%E5%90%8E%E5%90%AF%E5%8A%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%EF%BC%88%E8%A2%AB%E4%BE%9D%E8%B5%96%EF%BC%89"><span class="toc-number">5.2.15.</span> <span class="toc-text">15、列出在指定服务之后启动的服务（被依赖）</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#05%E3%80%81%E9%98%B2%E7%81%AB%E5%A2%99%E9%85%8D%E7%BD%AE"><span class="toc-number">6.</span> <span class="toc-text">05、防火墙配置</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1%E3%80%81%E6%9F%A5%E7%9C%8B%E9%98%B2%E7%81%AB%E5%A2%99%E7%9A%84%E5%91%BD%E4%BB%A4"><span class="toc-number">6.1.</span> <span class="toc-text">1、查看防火墙的命令</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2%E3%80%81%E9%85%8D%E7%BD%AE%E9%98%B2%E7%81%AB%E5%A2%99%E7%9A%84%E5%91%BD%E4%BB%A4"><span class="toc-number">6.2.</span> <span class="toc-text">2、配置防火墙的命令</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#3%E3%80%81centos7%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC"><span class="toc-number">6.3.</span> <span class="toc-text">3、centos7以下版本</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#06%E3%80%81%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1"><span class="toc-number">7.</span> <span class="toc-text">06、计划任务</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E3%80%81%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5"><span class="toc-number">7.1.</span> <span class="toc-text">一、计划任务的基本概念</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%8C%E3%80%81%E7%94%A8%E6%88%B7%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1"><span class="toc-number">7.2.</span> <span class="toc-text">二、用户计划任务</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E6%9F%A5%E7%9C%8Bcrontab%E6%96%87%E4%BB%B6"><span class="toc-number">7.2.1.</span> <span class="toc-text">1、查看crontab文件</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E7%BC%96%E8%BE%91crontab%E6%96%87%E4%BB%B6"><span class="toc-number">7.2.2.</span> <span class="toc-text">2、编辑crontab文件</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E5%88%A0%E9%99%A4crontab%E6%96%87%E4%BB%B6"><span class="toc-number">7.2.3.</span> <span class="toc-text">3、删除crontab文件</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4%E3%80%81crontab%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F"><span class="toc-number">7.2.4.</span> <span class="toc-text">4、crontab文件格式</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5%E3%80%81crontab%E7%A4%BA%E4%BE%8B"><span class="toc-number">7.2.5.</span> <span class="toc-text">5、crontab示例</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%89%E3%80%81%E7%B3%BB%E7%BB%9F%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1"><span class="toc-number">7.3.</span> <span class="toc-text">三、系统计划任务</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9B%9B%E3%80%81%E5%A6%82%E4%BD%95%E5%9C%A8%E7%94%A8%E6%88%B7%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1%E4%B8%AD%E6%89%A7%E8%A1%8C%E9%9C%80%E8%A6%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E7%A8%8B%E5%BA%8F"><span class="toc-number">7.4.</span> <span class="toc-text">四、如何在用户计划任务中执行需要环境变量的程序</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%94%E3%80%81%E5%BA%94%E7%94%A8%E7%BB%8F%E9%AA%8C"><span class="toc-number">7.5.</span> <span class="toc-text">五、应用经验</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#07%E3%80%81%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B3%BB%E7%BB%9F%E6%9C%8D%E5%8A%A1"><span class="toc-number">8.</span> <span class="toc-text">07、添加自定义系统服务</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E3%80%81%E7%BC%96%E5%86%99Oracle%E6%95%B0%E6%8D%AE%E5%BA%93%E5%90%AF%E5%8A%A8-%E9%87%8D%E5%90%AF-%E5%85%B3%E9%97%AD%E7%9A%84%E8%84%9A%E6%9C%AC"><span class="toc-number">8.1.</span> <span class="toc-text">一、编写Oracle数据库启动&#x2F;重启&#x2F;关闭的脚本</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E5%90%AF%E5%8A%A8Oracle%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84shell%E8%84%9A%E6%9C%AC"><span class="toc-number">8.1.1.</span> <span class="toc-text">1、启动Oracle数据库的shell脚本</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E9%87%8D%E5%90%AFOracle%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84shell%E8%84%9A%E6%9C%AC"><span class="toc-number">8.1.2.</span> <span class="toc-text">2、重启Oracle数据库的shell脚本</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E5%85%B3%E9%97%ADOracle%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84shell%E8%84%9A%E6%9C%AC"><span class="toc-number">8.1.3.</span> <span class="toc-text">3、关闭Oracle数据库的shell脚本</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%8C%E3%80%81%E7%BC%96%E5%86%99%E8%87%AA%E5%AE%9A%E4%B9%89%E6%9C%8D%E5%8A%A1%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"><span class="toc-number">8.2.</span> <span class="toc-text">二、编写自定义服务的配置文件</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81Unit%E9%83%A8%E5%88%86"><span class="toc-number">8.2.1.</span> <span class="toc-text">1、Unit部分</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81Service%E9%83%A8%E5%88%86"><span class="toc-number">8.2.2.</span> <span class="toc-text">2、Service部分</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81Install%E9%83%A8%E5%88%86"><span class="toc-number">8.2.3.</span> <span class="toc-text">3、Install部分</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4%E3%80%81%E9%87%8D%E5%90%AF%E8%A1%8C%E4%B8%BA"><span class="toc-number">8.2.4.</span> <span class="toc-text">4、重启行为</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%89%E3%80%81%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E6%9C%8D%E5%8A%A1"><span class="toc-number">8.3.</span> <span class="toc-text">三、使用自定义的服务</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E9%87%8D%E6%96%B0%E5%8A%A0%E8%BD%BD%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"><span class="toc-number">8.3.1.</span> <span class="toc-text">1、重新加载服务配置文件</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E5%90%AF%E5%8A%A8-%E5%81%9C%E6%AD%A2-%E5%90%AF%E9%87%8Doracle%E6%9C%8D%E5%8A%A1"><span class="toc-number">8.3.2.</span> <span class="toc-text">2、启动&#x2F;停止&#x2F;启重oracle服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E6%8A%8Aoracle%E6%9C%8D%E5%8A%A1%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%BC%80%E6%9C%BA-%E5%85%B3%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8-%E5%81%9C%E6%AD%A2"><span class="toc-number">8.3.3.</span> <span class="toc-text">3、把oracle服务设置为开机&#x2F;关机自启动&#x2F;停止</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4%E3%80%81%E6%9F%A5%E7%9C%8BOracle%E5%AE%9E%E4%BE%8B%E5%90%AF%E5%8A%A8-%E5%81%9C%E6%AD%A2%E7%9A%84%E6%97%A5%E5%BF%97"><span class="toc-number">8.3.4.</span> <span class="toc-text">4、查看Oracle实例启动&#x2F;停止的日志</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#08%E3%80%81%E9%85%8D%E7%BD%AEIP%E5%9C%B0%E5%9D%80%E5%92%8CDNS"><span class="toc-number">9.</span> <span class="toc-text">08、配置IP地址和DNS</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E3%80%81%E6%9F%A5%E7%9C%8BIP%E5%9C%B0%E5%9D%80"><span class="toc-number">9.1.</span> <span class="toc-text">一、查看IP地址</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81ifconfig%E5%91%BD%E4%BB%A4"><span class="toc-number">9.1.1.</span> <span class="toc-text">1、ifconfig命令</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81ip-addr%E5%91%BD%E4%BB%A4"><span class="toc-number">9.1.2.</span> <span class="toc-text">2、ip addr命令</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%8C%E3%80%81%E9%85%8D%E7%BD%AE%E7%BD%91%E5%8D%A1"><span class="toc-number">9.2.</span> <span class="toc-text">二、配置网卡</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E5%8A%A8%E6%80%81IP%E5%9C%B0%E5%9D%80"><span class="toc-number">9.2.1.</span> <span class="toc-text">1、动态IP地址</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E9%9D%99%E6%80%81IP%E5%9C%B0%E5%9D%80"><span class="toc-number">9.2.2.</span> <span class="toc-text">2、静态IP地址</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E9%87%8D%E5%90%AF%E7%BD%91%E5%8D%A1"><span class="toc-number">9.2.3.</span> <span class="toc-text">3、重启网卡</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%89%E3%80%81%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9"><span class="toc-number">9.3.</span> <span class="toc-text">三、注意事项</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9B%9B%E3%80%81%E6%9C%AC%E5%9C%B0%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%AE%BE%E7%BD%AE%E9%9D%99%E6%80%81IP%E5%90%8E%E4%B8%8D%E8%83%BD%E4%B8%8A%E7%BD%91%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95"><span class="toc-number">9.4.</span> <span class="toc-text">四、本地虚拟机设置静态IP后不能上网的解决方法</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1%E3%80%81%E4%BB%A5%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86%E5%91%98%E6%89%93%E5%BC%80VMWare"><span class="toc-number">9.4.1.</span> <span class="toc-text">1、以系统管理员打开VMWare</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2%E3%80%81%E9%80%89%E6%8B%A9%E8%99%9A%E6%8B%9F%E7%BD%91%E7%BB%9C%E7%BC%96%E8%BE%91%E5%99%A8%E8%8F%9C%E5%8D%95"><span class="toc-number">9.4.2.</span> <span class="toc-text">2、选择虚拟网络编辑器菜单</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3%E3%80%81%E9%80%89%E6%8B%A9VMnet8%E8%BF%99%E4%B8%80%E8%A1%8C"><span class="toc-number">9.4.3.</span> <span class="toc-text">3、选择VMnet8这一行</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4%E3%80%81%E8%BF%98%E5%8E%9FVMnet8%E7%9A%84%E9%BB%98%E8%AE%A4%E8%AE%BE%E7%BD%AE"><span class="toc-number">9.4.4.</span> <span class="toc-text">4、还原VMnet8的默认设置</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5%E3%80%81%E4%BF%AE%E6%94%B9VMnet8%E7%9A%84%E5%8F%82%E6%95%B0"><span class="toc-number">9.4.5.</span> <span class="toc-text">5、修改VMnet8的参数</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6%E3%80%81NAT%E8%AE%BE%E7%BD%AE"><span class="toc-number">9.4.6.</span> <span class="toc-text">6、NAT设置</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7%E3%80%81%E4%BF%9D%E5%AD%98%E8%AE%BE%E7%BD%AE"><span class="toc-number">9.4.7.</span> <span class="toc-text">7、保存设置</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#8%E3%80%81%E7%A1%AE%E8%AE%A4%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%BANAT%E6%A8%A1%E5%BC%8F"><span class="toc-number">9.4.8.</span> <span class="toc-text">8、确认虚拟机为NAT模式</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#9%E3%80%81%E5%90%AF%E5%8A%A8%E8%99%9A%E6%8B%9F%E6%9C%BACentOS7"><span class="toc-number">9.4.9.</span> <span class="toc-text">9、启动虚拟机CentOS7</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#10%E3%80%81%E8%AE%BE%E7%BD%AECentOS7%E7%9A%84%E4%B8%8D%E9%9D%99%E6%80%81IP%E5%9C%B0%E5%9D%80"><span class="toc-number">9.4.10.</span> <span class="toc-text">10、设置CentOS7的不静态IP地址</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#11%E3%80%81%E9%87%8D%E5%90%AFCentOS7%E7%9A%84%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1"><span class="toc-number">9.4.11.</span> <span class="toc-text">11、重启CentOS7的网络服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#12%E3%80%81%E6%B5%8B%E8%AF%95%E6%95%88%E6%9E%9C"><span class="toc-number">9.4.12.</span> <span class="toc-text">12、测试效果</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#13%E3%80%81%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9"><span class="toc-number">9.4.13.</span> <span class="toc-text">13、注意事项</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#09%E3%80%81%E5%BC%80%E6%9C%BA%E5%90%AF%E5%8A%A8%E7%A8%8B%E5%BA%8F"><span class="toc-number">10.</span> <span class="toc-text">09、开机启动程序</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1%E3%80%81-etc-rc-local%E6%98%AF-etc-rc-d-rc-local%E7%9A%84%E8%BD%AF%E9%93%BE%E6%8E%A5"><span class="toc-number">10.1.</span> <span class="toc-text">1、&#x2F;etc&#x2F;rc.local是&#x2F;etc&#x2F;rc.d&#x2F;rc.local的软链接</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2%E3%80%81rc-local%E6%96%87%E4%BB%B6%E7%9A%84%E5%8E%9F%E5%A7%8B%E5%86%85%E5%AE%B9"><span class="toc-number">10.2.</span> <span class="toc-text">2、rc.local文件的原始内容</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#3%E3%80%81rc-local%E6%96%87%E4%BB%B6%E7%9A%84%E9%85%8D%E7%BD%AE"><span class="toc-number">10.3.</span> <span class="toc-text">3、rc.local文件的配置</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#4%E3%80%81%E5%BA%94%E7%94%A8%E7%BB%8F%E9%AA%8C"><span class="toc-number">10.4.</span> <span class="toc-text">4、应用经验</span></a></li></ol></li></ol></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/blog/java/01%20Spring%20Security%20&amp;%20oauth2/" title="Spring Security &amp; Oauth2"><img src= "" data-lazy-src="/images/spring-security.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Spring Security &amp; Oauth2"/></a><div class="content"><a class="title" href="/blog/java/01%20Spring%20Security%20&amp;%20oauth2/" title="Spring Security &amp; Oauth2">Spring Security &amp; Oauth2</a><time datetime="2024-04-25T07:24:45.000Z" title="发表于 2024-04-25 15:24:45">2024-04-25</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/blog/java/02%20JWT%E5%B7%A5%E5%85%B7%E7%B1%BB/" title="JWT工具类"><img src= "" data-lazy-src="/images/jwt.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JWT工具类"/></a><div class="content"><a class="title" href="/blog/java/02%20JWT%E5%B7%A5%E5%85%B7%E7%B1%BB/" title="JWT工具类">JWT工具类</a><time datetime="2024-04-25T07:24:45.000Z" title="发表于 2024-04-25 15:24:45">2024-04-25</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/blog/java/00%20Security%20%E9%9B%86%E6%88%90%E7%A4%BA%E4%BE%8B/" title="SpringSecurity 集成示例"><img src= "" data-lazy-src="/images/spring-security.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="SpringSecurity 集成示例"/></a><div class="content"><a class="title" href="/blog/java/00%20Security%20%E9%9B%86%E6%88%90%E7%A4%BA%E4%BE%8B/" title="SpringSecurity 集成示例">SpringSecurity 集成示例</a><time datetime="2024-04-25T07:24:43.000Z" title="发表于 2024-04-25 15:24:43">2024-04-25</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/blog/java/101%20Mybatis-plus%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90/" title="MybatisPlus 快速集成"><img src= "" data-lazy-src="/images/mybatis-plus.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="MybatisPlus 快速集成"/></a><div class="content"><a class="title" href="/blog/java/101%20Mybatis-plus%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90/" title="MybatisPlus 快速集成">MybatisPlus 快速集成</a><time datetime="2024-04-21T07:39:43.000Z" title="发表于 2024-04-21 15:39:43">2024-04-21</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/blog/java/10%20Mybatis%20%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90/" title="Mybatis 快速集成"><img src= "" data-lazy-src="/images/mybaits.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Mybatis 快速集成"/></a><div class="content"><a class="title" href="/blog/java/10%20Mybatis%20%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90/" title="Mybatis 快速集成">Mybatis 快速集成</a><time datetime="2024-04-21T07:24:43.000Z" title="发表于 2024-04-21 15:24:43">2024-04-21</time></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2020 - 2024 By mowei</div><div class="footer_custom_text">海内存知已，天涯若比邻</div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="font-plus" type="button" title="放大字体"><i class="fas fa-plus"></i></button><button id="font-minus" type="button" title="缩小字体"><i class="fas fa-minus"></i></button><button id="translateLink" type="button" title="简繁转换">繁</button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><div class="search-dialog__title" id="local-search-title">本地搜索</div><div id="local-input-panel"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div></div><hr/><div id="local-search-results"></div><span class="search-close-button"><i class="fas fa-times"></i></span></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="/js/tw_cn.js"></script><script src="https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js"></script><script src="/js/search/local-search.js"></script><script>var preloader = {
  endLoading: () => {
    document.body.style.overflow = 'auto';
    document.getElementById('loading-box').classList.add("loaded")
  },
  initLoading: () => {
    document.body.style.overflow = '';
    document.getElementById('loading-box').classList.remove("loaded")

  }
}
window.addEventListener('load',preloader.endLoading())</script><div class="js-pjax"><script>if (document.getElementsByClassName('mermaid').length) {
  if (window.mermaidJsLoad) mermaid.init()
  else {
    getScript('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js').then(() => {
      window.mermaidJsLoad = true
      mermaid.initialize({
        theme: 'default',
      })
      true && mermaid.init()
    })
  }
}</script></div><div class="aplayer no-destroy" data-id="9385310356" data-server="netease" data-type="playlist" data-fixed="true" data-mini="true" data-listFolded="false" data-order="random" data-preload="none" data-autoplay="true" muted></div><canvas class="fireworks" mobile="false"></canvas><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/fireworks.min.js"></script><script defer="defer" id="fluttering_ribbon" mobile="false" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-fluttering-ribbon.min.js"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script><script src="https://cdn.jsdelivr.net/gh/metowolf/MetingJS@1.2/dist/Meting.min.js"></script><script src="https://cdn.jsdelivr.net/npm/pjax/pjax.min.js"></script><script>let pjaxSelectors = [
  'title',
  '#config-diff',
  '#body-wrap',
  '#rightside-config-hide',
  '#rightside-config-show',
  '.js-pjax'
]

if (false) {
  pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]')
}

var pjax = new Pjax({
  elements: 'a:not([target="_blank"])',
  selectors: pjaxSelectors,
  cacheBust: false,
  analytics: false,
  scrollRestoration: false
})

document.addEventListener('pjax:send', function () {

  // removeEventListener scroll 
  window.removeEventListener('scroll', window.tocScrollFn)
  window.removeEventListener('scroll', scrollCollect)

  typeof preloader === 'object' && preloader.initLoading()
  
  if (window.aplayers) {
    for (let i = 0; i < window.aplayers.length; i++) {
      if (!window.aplayers[i].options.fixed) {
        window.aplayers[i].destroy()
      }
    }
  }

  typeof typed === 'object' && typed.destroy()

  //reset readmode
  const $bodyClassList = document.body.classList
  $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode')

})

document.addEventListener('pjax:complete', function () {
  window.refreshFn()

  document.querySelectorAll('script[data-pjax]').forEach(item => {
    const newScript = document.createElement('script')
    const content = item.text || item.textContent || item.innerHTML || ""
    Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value))
    newScript.appendChild(document.createTextNode(content))
    item.parentNode.replaceChild(newScript, item)
  })

  GLOBAL_CONFIG.islazyload && window.lazyLoadInstance.update()

  typeof chatBtnFn === 'function' && chatBtnFn()
  typeof panguInit === 'function' && panguInit()

  // google analytics
  typeof gtag === 'function' && gtag('config', '', {'page_path': window.location.pathname});

  // baidu analytics
  typeof _hmt === 'object' && _hmt.push(['_trackPageview',window.location.pathname]);

  typeof loadMeting === 'function' && document.getElementsByClassName('aplayer').length && loadMeting()

  // Analytics
  if (false) {
    MtaH5.pgv()
  }

  // prismjs
  typeof Prism === 'object' && Prism.highlightAll()

  typeof preloader === 'object' && preloader.endLoading()
})

document.addEventListener('pjax:error', (e) => {
  if (e.request.status === 404) {
    pjax.loadUrl('/404.html')
  }
})</script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div><script src="/live2d_models/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"pluginRootPath":"live2d_models/","pluginJsPath":"lib/","pluginModelPath":"assets/","tagMode":false,"debug":false,"model":{"jsonPath":"/live2d_models/assets/wanko.model.json"},"display":{"position":"left","width":100,"height":150,"hOffset":-10,"vOffset":40},"mobile":{"show":true},"react":{"opacity":0.7},"log":false});</script></body></html>